2011-06-06 64 views
0

我想用一个窗体在rails中更新多个模型。我曾看过Railscasts#196和许多嵌套模型示例,但无法让它们工作。不同之处在于我想在父模型中为子模型创建一个记录。多种型号,轨道中的一种形式。想在创建嵌套模型对象时创建父窗体

我有这3种型号:
用户模型
的has_many:产品
的has_many:商店

产品型号
belongs_to的:用户
belongs_to的:店面
accepts_nested_attributes_for:商店

店铺型号
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 

该代码产生以下错误:
的零未定义的方法`编译”:NilClass

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

回答

0

accepts_nested_attributes_for

仅适用于一对一和一对多的关系,那就是你有初级模型是主要的父.. 你会在用户模型的产品和/或存储使用。但是,如果商店不存在,它看起来像是在他们进入产品时创建新商店的权利?

因为它看起来你的商店只是一个或两个字段,我只是在控制器中使用字段添加商店..

相关问题