我想在rails中使用一个表单更新多个模型。我查看了Railscasts#196和许多嵌套模型示例,但无法让它们工作。不同之处在于我想在子模型的表单中创建父模型中的记录。
我有这三种型号:
用户模型
has_many:产品
has_many:商店
产品型号
belongs_to:用户
belongs_to:store
accepts_nested_attributes_for:store
商店模型
has_many:产品
我有一个用户可以输入产品的表单。我希望它有一个可以进入商店的字段。此条目将在商店模型和产品模型中创建记录,并将store_id存储在商店模型中。
<%= form_for @product, :html => { :multipart => true } do |f| %>
<%= f.text_field :product_name %>
<% f.fields_for :store do |store|%>
<%= store.text_area :store_name %>
<%end%>
<% end %>
控制器
@product = Product.new
@product.store.build
此代码导致以下错误:
未定义的方法`build'为nil:NilClass
我只是希望能够在进入产品时创建新的商店条目。 (如果它是重复的条目,我将不允许它,但我将在其他地方处理)。有什么建议吗?
答案 0 :(得分:0)
accepted_nested_attributes_for
仅适用于一对一和一对多关系,其中主要模型是主要父级。 您可以在产品和/或商店的用户模型中使用它。但是,如果商店不存在,您似乎想在他们输入产品时创建新商店吗?
由于您的商店看起来只是一两个字段,我只想使用其中的字段在控制器中添加商店..