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 %>

但我似乎无法弄清楚控制器端的逻辑来匹配它。我需要在控制器端做什么才能使该视图(或具有相同效果的东西)起作用?

4

1 回答 1

0

您需要在模型中设置accepts_nested_attributes_for

当您完成该设置时,您需要做的就是product = Product.create!(params[:product]) 嵌套对象将自动保存,假设嵌套表单构建正确。

如果您在构建嵌套表单时需要帮助,请查看链接 上的fields_for帮助。

于 2013-05-14T07:10:25.347 回答