具有强参数的嵌套参数

时间:2018-02-02 04:30:26

标签: ruby-on-rails strong-parameters

在Rails 5.1应用程序中,从我的视角来看,我将以下内容发送给我的控制器

  

“area”=> {“name”=>“name”,“project_id”=>“123”,   “所有者”=> {“step2”=> [“345”,“678”],“step3”=> [“123”]}}

如何使用强参数,允许owners的全部内容通过?

我已经尝试了Rails 4 - Strong Parameters - Nested Objects中的建议,但似乎没有任何效果。

params.require(:area).permit(:name, :project_id, :owners)
params.require(:area).permit(:name, :project_id, owners: [])
params.require(:area).permit(:name, :project_id, owners: []).tap do |whitelisted|
 whitelisted[:owners] = params[:application_area][:owners]
end #=> ActionController::UnfilteredParameters - unable to convert unpermitted parameters to hash:

owners哈希的内容可能会因请求而变化;即下次我可以发送

  

“area”=> {“name”=>“name”,“project_id”=>“123”,   “所有者”=> {“color”=> [“345”,“678”],“形状”=> [“123”]}}

1 个答案:

答案 0 :(得分:2)

您必须为所有者列出所有可能值的白名单

params.require(:area).permit(:name, :project_id, owners: [step2: [], color: [], step2: [], step3: []])

好的,您是否尝试使用rails 5进行动态内容?

params.require(:area).permit(:name,:project_id,:owners => {})