1

理由:

# edit.html.erb
<%= form_for @product do |f| %>
  <%= f.fields_for :shop do |sf| %>
    # Nothing here
  <% end %>
<% end %>

非表示の入力フィールドを生成します。

<input type="hidden" value="23" name="product[shop_attributes][id]" id="product_shop_attributes_id">

?

関連するコントローラ コード:

def edit
  @product = Product.find(params[:id])
end
4

1 に答える 1

6

あなたが編集している@productにショップがあるからでしょう。Rails はこれを fields_for に挿入して、フォームが送信されたときに、ネストされた属性がどのショップ向けのものかを認識できるようにしています。これは、デフォルトのネストされた属性の動作です。

于 2010-12-20T10:29:20.433 に答える