2012-03-20 66 views
0

我有這些模型:fields_for和has_many_through

class Order < ActiveRecord::Base 
    has_many :order_lines 
    has_many :prizes, :through => :order_lines 
    accepts_nested_attributes_for :order_lines 
end 

class Prize < ActiveRecord::Base 
    has_many :order_lines 
end 

class OrderLine < ActiveRecord::Base 
    belongs_to :order 
    belongs_to :prize 
end 

我想在訂單的嵌套形式顯示與文本框所有的獎旁邊用戶可以在其中輸入件(如量訂購)。當提交表單時,創建操作應相應地創建order_lines。我無法在任何地方找到解決方案。

回答

0

首先在Order模型中使用accepts_nested_attributes_for :prizes,而不是你擁有的。

之後,它很容易,只需在視圖中添加表(沒有額外的步驟控制器)

<%= form_for @order do |order_form| %> 
    .. 
    <%= order_form.fields_for :prizes do |prizes_form| %> 
    <%= prizes_form.text_field :piece %> 
    .. 
    <% end %> 
.. 
<% end %> 

這是直接從文檔... You should definitely check that first

+0

感謝您的回覆。這樣做時,fields_for不會遍歷獎品。塊中的代碼根本不運行。 – jriff 2012-03-20 11:24:58

+0

代碼正常運行,但可能不會顯示任何內容,因爲訂單沒有任何獎勵。如果您想在訂單表單中編輯和實例化獎品,您應該在控制器中添加@ order.prizes.build。查看[此鏈接](http://railscasts.com/episodes/196-nested-model-form-part-1)以獲取更多信息 – shuriu 2012-03-20 12:18:55

+0

如果我執行@ order.prizes.build,我所得到的只有一個空獎實例在塊中。鏈接到RailsCasts只適用於我有一對多關聯。這裏情況不同 :-( – jriff 2012-03-20 12:26:00