Rails 4未允许的参数

时间:2014-05-30 19:54:23

标签: ruby-on-rails ruby-on-rails-4

我有以下动态参数,具体取决于我尝试添加到订单的订单项

{"line_item" => {"items"=>{"0"=>{"price"=>"5.75", "name"=>"Item name", "quantity"=>"5"}, "1"=>{"price"=>"3.35", "name"=>"Item name", "quantity"=>"1"}}}

在我的控制器中:

def lineitems_params
  params.require(:line_item).permit(:key1, :key2, :key3, :key4, :payment_type, :payment_provider).tap do |whitelisted|
    whitelisted[:items] = params[:line_item][:items]
  end
end

我仍然得到了

Unpermitted parameters: items

在我的日志中,它不会更新项目。 我该如何解决这个问题?

注意:items hash可以包含很多元素。

编辑:

在我的模特中:

serialize :items, Hash

1 个答案:

答案 0 :(得分:0)

这应该有效

def lineitems_params

params.require(:line_item).permit(:key1, :key2, :key3, :key4, :payment_type, :payment_provider, {:items => {:price, :name, :quantity}})

end

<强>更新

可能你应该这样给予

def lineitems_params
  params.require(:line_item).tap do |whitelisted|
    whitelisted[:items] = params[:line_item][:items]
  end
end

<强> Source

注意:不要给params.require(:line_items).permit!它允许所有属性。