Railscasts#198のように、1つのフォームのインデックスビューで親モデルの複数のインスタンスを編集しています。Railscasts#196および#197のように、各親にはhas_many:childrenおよびaccepts_nested_attributes_for:childrenがあります。
<%= 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と名前を生成します。
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 = "parents_1 ___ children_chore"
これは正しいparent_indexを取得しますが、子インデックス用の配列スロットを提供しません。
「[]children[]」も正しくありません:id = "parents_1__children_3_chore"
3_choreではなくattributes_0_choreを期待していたので。
これを機能させるには、FormBuilderオブジェクトの属性またはサブクラスFormBuilderを直接変更する必要がありますか、それともこの状況に適合する構文がありますか?
考えてくれてありがとう。