Я использую Rails для автоматического создания магических объектов на основе сложного набора вложенных атрибутов. Поэтому мне нужно, чтобы параметры были вложены очень определенным образом. Очевидно, я понимаю, что могу их построить, но хочу с JS, но я бы хотел, чтобы форма формы автоматически помогала в строительстве. Для контекста у меня есть 2 столбца, представленных 2 <td>
s. Каждый столбец может либо создать новую запись, либо отредактировать существующую запись. Конечно, когда существующая запись должна быть изменена, идентификатор записи должен быть передан.
Представленный HTML выглядит следующим образом:
<td width="50%" style="padding-right:3%" class="logistic-details" data-type="logistics" data-typelogistics="delivery" data-instructions="test instructions" data-id="1" data-amount="20">
<span class="area-to-inject-amount-inputs" data-object="type_logistics" data-type="logistics" data-typelogistics="delivery">
<input class="labeler-response" name="type_logistics_attributes[][id]" type="hidden" value="1">
<input class="labeler-response" name="type_logistics_attributes[][instructions]" type="text" value="test instructions">
</span>
</td>
<td width="50%" style="padding-right:3%" class="logistic-details" data-type="logistics" data-typelogistics="pickup" data-instructions="" data-id="" data-amount="0">
<span class="area-to-inject-amount-inputs" data-object="type_logistics" data-type="logistics" data-typelogistics="pickup" data-actioned="charged">
<input type="hidden" name="type_logistics_attributes[][type_of_logistics]" value="pickup">
<input class="injected-amount-input" type="number" min="0" max="" placeholder="Amount" name="type_logistics_attributes[][charged_amounts_attributes][][amount]" value="20">
<span class="area-to-inject-type-of-amount">
<input type="hidden" name="type_logistics_attributes[][charged_amounts_attributes][][type_of_amount]" value="logistics">
</span>
<input class="labeler-response" name="type_logistics_attributes[][instructions]" type="text" placeholder="Enter address and instructions">
</span>
</td>
В этом случае первый <td>
изменяет существующую запись с идентификатором 1, а второй <td>
предоставляет параметры для создания новой записи. Когда создается новая запись, также создается дочерний элемент charged_amounts
. Таким образом, это параметры, которые я ожидал бы:
"type_logistics_attributes"=>[
{"id"=>"1", "instructions"=>"test instructions"},
{"type_of_logistics"=>"pickup", "charged_amounts_attributes"=>[{"amount"=>"40", "type_of_amount"=>"logistics"}], "instructions" => "123 Fake street"}
]
Вместо этого я получаю следующее:
"type_logistics_attributes"=>[
{"id"=>"1", "type_of_logistics"=>"pickup", "instructions"=>"test instructions", "charged_amounts_attributes"=>[{"amount"=>"40", "type_of_amount"=>"logistics"}]},
{"instructions"=>"123 Fake street"}
]
Как-то граница <td>
не работает, а дочерние атрибуты charged_amount
каким-то образом были сосредоточены в первой модификации существующей записи <td>
.
Спасибо!