多个型号,一种形式在轨道中。想要在表单中创建嵌套模型对象时创建父对象

时间:2011-06-06 05:46:27

标签: ruby-on-rails-3 forms nested models

我想在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

我只是希望能够在进入产品时创建新的商店条目。 (如果它是重复的条目,我将不允许它,但我将在其他地方处理)。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

accepted_nested_attributes_for

仅适用于一对一和一对多关系,其中主要模型是主要父级。 您可以在产品和/或商店的用户模型中使用它。但是,如果商店不存在,您似乎想在他们输入产品时创建新商店吗?

由于您的商店看起来只是一两个字段,我只想使用其中的字段在控制器中添加商店..