Я редактирую несколько экземпляров родительской модели в представлении индекса в одной форме, как в Railscasts # 198.У каждого родителя есть has_many: children и acceptpts_nested_attributes_for: children, как в Railscasts # 196 и # 197
<%= form_tag %>
<% for parent in @parents %>
<%= fields_for "parents[]", parent do |f|
<%= f.text_field :job %>
<%= f.fields_for :children do |cf| %>
<% cf.text_field :chore %>
<% end %>
<% end %>
<% end %>
<% end %>
При заданном parent.id == 1
f.text_field: job правильно генерирует
<input id="parents_1_job" type="text" value="coding" size="30" name="parents[1][job]">
Но cf.text_field: chore генерирует идентификаторы и имена, которые не имеют родительского индекса.
id="parents_children_attributes_0_chore"
name="parents[children_attributes][0][chore]"
Если я попытаюсь передать определенный дочерний объект в f.fields_for следующим образом:
<% for child in parent.children %>
<%= f.fields_for :children, child do |cf| %>
<%= cf.text_field :chore %>
<% end %>
<% end %>
Я получу то же самое.Если я изменяю метод с: children на "[] children", я получаю
id = "parent_1 ___ children_chore"
, который получает правильный parent_index, но не предоставляет слот массива для дочернего индекса.
"[] children []" также не прав: id = "parent_1__children_3_chore"
, поскольку я ожидал атрибуты_0_chore вместо 3_chore.
Нужно ли мне напрямую изменять атрибут объекта FormBuilder или подкласс FormBuilder, чтобы это работало, или есть синтаксис, который соответствует этой ситуации?
Спасибо за любые мысли.