2013-05-13 50 views
0

我想做一個有點複雜的有點巢形式。我所(簡化)如下:複雜的略嵌套形式

型號/ product.rb

class Product < ActiveRecord::Base 
    attr_accessible :name 
    has_many :colors 
end 

型號/ color.rb

class Color < ActiveRecord::Base 
    attr_accessible :quantity 
    belongs_to :product 
end 

的意見/管理/ update_inventories.html.erb

<% @products.each do |p| %> 
    <%= p.name %> 
    <% p.colors.each do |c| %> 
    <%= c.name %>: 
    <%= form_for :color, :url => color_update_path(:id => v.id) do |f| %> 
     <%= f.number_field :quantity, :value => c.quantity, :min => 0 %> 
     <%= submit_tag "Update" %> 
    <% end %> 
    <% end %> 
<% end %> 

問題在於它會產生令人擔憂的表格數量,您必須更新一套西裝。我想是這樣的觀點:

視圖/管理/ update_inventories_revised.html.erb

<%= form_for :inventory, :url => custom_update_path do |f| %> 
    <% @products.each do |p| %> 
    <%= p.name %> 
    <% p.colors.each do |c| %> 
     <%= f.number_field :quantity, :value => c.quantity, :min => 0 %> 
    <% end %> 
    <% end %> 
    <% f.submit_tag "Update All" %> 
<% end %> 

但我似乎無法找出該控制器端的邏輯來匹配它。我需要做什麼做控制器端,使該視圖(或具有相同效果的東西)功能?

回答

0

您需要在您的模型中設置accepts_nested_attributes_for

當你得到這個設置時,你需要做的就是product = Product.create!(params[:product])假設嵌套窗體是正確構建的,嵌套對象會自動保存。

如果您需要幫助構建嵌套表單,請查看fields_for幫助this鏈接。