0

私はいくつかのフォームを作成し、そのようにネストされたフォームを作成しようとしました:

<%= form_for(@birth) do |f| %>
    <%= f.text_area(:obs) %>
    <%= f.fields_for :child_attributes do |ff| %>
        <%= text_field(:child_attributes, :earring) %>
    <% end %>
<% end %>

次に、BirthsController で、ネストされた属性を次のように取得できます。

child = params[:child_attributes]

しかし、ネストされたフォームを次のように変更すると:

<%= form_for(@birth) do |f| %>
    <%= f.text_area(:obs) %>
    <%= f.fields_for :child_attributes do |ff| %>
        <%= ff.text_field(:earring) %>
    <% end %>
<% end %>

それは動作しません。それらの正確な違いは何ですか?2番目の方法(よりエレガントだと思います)が機能しないのはなぜですか?

ありがとう

4

1 に答える 1

1

メソッドはtext_fieldobject について何も知らない@birthので、フィールドの名前は になります。そのため、child_attributes経由でアクセスできますがparams[:child_attributes]、それはあなたが望むものではありません。

を使用する必要がありますff.text_field。次に、Birthモデルに次を追加します。

accepts_nested_attributes_for :child_attributes
attr_accessible :child_attributes_attributes
于 2012-09-01T15:33:18.627 に答える