如何访问Rails中嵌套的参数(How to access nested parameters in

2019-11-02 02:34发布

在控制器中,我试图访问其深层的嵌套的参数。 这是我的参数跟踪。

Parameters:

{"utf8"=>"✓",
 "authenticity_token"=>"2j+Nh5C7jPkNOsQnWoA0wtG/vWxLMpyKt6aiC2UmxgY=",
 "inventory"=>{"ingredients_attributes"=>{"0"=>{"ingredient_name"=>"Bread"}},
 "purchase_date"=>"11",
 "purchase_price"=>"11",
 "quantity_bought"=>"11"},
 "commit"=>"Create Inventory"}

我想从这个检索“面包”。 我试图params[:inventory][:ingredient][:ingredient_name]和其它变化。 什么是正确的styntax?

如果它的事项,

Inventory has_many :ingredients
Inventory accepts_nested_attributes_for :inventories

谢谢!

Answer 1:

值“面包”直接访问会从字面上是:

params[:inventory][:ingredients_attributes]["0"][:ingredient_name]

我敢打赌,你不想这样做。

随着accepts_nested_attributes_for和散列结构(也假定成分属性的设置是否正确),你可以在库存实例和值“面包”把params将被设置为ingredient_name属性关联中的成分对象之一:

@inventory = Inventory.new(params[:inventory]) 
# or @inventory.attributes = params[:inventory] for an existing 
# inventory instance

ingredient = @inventory.ingredients.first
ingredient.ingredient_name
# => "Bread"


文章来源: How to access nested parameters in Rails