所以我允许以下参数。
p = params.permit(:a, :b, :c, :lines => [:location_id, :quantity, :product => [:id]])
在我的控制器操作中,我将lines
参数添加到我允许的数据中。
p['lines'] << {"product"=>{"id"=>"123456"}, "quantity"=>"2", "location_id"=>"123456"}
这是params在他们被改变后的样子。
puts params['lines']
#> [<ActionController::Parameters {"product"=>{"id"=>"123456"}, "quantity"=>"2", "location_id"=>"123456"} permitted: false>]
但是你可以看到它是不允许的。我在这里失踪了什么?我正在使用Rails 5.
答案 0 :(得分:1)
要获得允许(列入白名单)参数,您始终必须确保在p
更改时调用允许的版本params
。
params
和p
之间的区别在于params.permit(...)
会返回自己的允许副本,并将其分配给p
。所以params
权限状态保持不变。
尝试使用puts p['lines']
代替puts params['lines']
,看看您是否获得了理想的结果。