2011-06-06 65 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

僅適用於一對一和一對多的關係,那就是你有初級模型是主要的父.. 你會在用戶模型的產品和/或存儲使用。但是,如果商店不存在,它看起來像是在他們進入產品時創建新商店的權利?

因爲它看起來你的商店只是一個或兩個字段,我只是在控制器中使用字段添加商店..

相關問題