親モデルと子モデルがあります。親とそれに関連付けられた子を同時に作成するためのフォームを作成しようとしています。
私のフォームには、新しい子を「追加」するためのボタンがあります (親は、ユーザーが定義した数の子を持つことができます)。ボタンがクリックされると、子の非表示フィールドがフォームに追加され、その Name 属性がデフォルトに設定されます。これは、フォームが最終的に送信されるときに保存されます。hidden_field_tag
ボタンクリックイベントでフォームにa を追加することで、これを行ってきました。
hidden_field_tag "parent[children_attributes][][name]", "something"
作成するもの:
<input id="children_attributes__name" name="parent[children_attributes][][name]" type="hidden" value="something">
これはうまくいくようです!しかし、私は空のことを心配しています[]
。それが何であるか、なぜ機能するのかはわかりませんが、機能することを発見しました。安全に使用できますか?
を使用して作成されたフォーム フィールドをfields_for
見ると、次のように、中間の配列/ハッシュ (それが何であれ) に数値インデックスが設定されていることがわかります。
<input id="children_attributes_0_name" name="parent[children_attributes][0][name]" type="text">
残念ながら、fields_for
「追加」ボタンをクリックしたときにのみ非表示フィールドを追加する必要があるため、使用できません。
ここで正しいアプローチは何ですか?