如何访问嵌套参数

时间:2010-04-09 19:22:40

标签: ruby-on-rails parameters nested-forms

我想获得一些嵌套参数。我有一个包含许多物品的订单,这些物品都有一个类型。我想从控制器创建方法获取type_id参数。

@order = Order.new(params[:order])
@order.items.each do |f|
  f.item_type_id = Item_type.find_by_name(f.item_type_id).id
end

原因是我希望用户能够在视图中创建新的item_types。当他们这样做时,我使用AJAX调用将它们添加到数据库中。当他们发布表单时,我会在item_type_id参数中获取item_type的名称,并且我想找到正确的item_type并将id设置为

1 个答案:

答案 0 :(得分:26)

要从params访问嵌套字段,请执行以下操作:

params[:order][:items_attributes].values.each do |item|
  item[:type_id]
end if params[:order] and params[:order][:items_attributes]

如果您已声明正确的关联并且accepts_nested_attributes_for

,则上述解决方案将起作用
class Order < ActiveRecord::Base
  has_many :items
  accepts_nested_attributes_for :items, :allow_destroy => true
end

class Item < ActiveRecord::Base
  belongs_to :order
end