为什么:
# 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
答案 0 :(得分:6)
这是因为你正在编辑的@product有一个商店。 Rails已将其插入fields_for中,以便在提交表单时,它知道这些嵌套属性适用于哪个商店。它是默认的嵌套属性行为。