[英]Whitelisting parameters for multiple objects from nested form
我有一個旨在更新關聯中的對象集合的表單:
<%= form_tag(url: update_parent_children_path(parent_id: @parent.id), method: :put) do %>
<% @children.each do |child| %>
<%= fields_for "children[]", child do |cf| %>
.... Fields for form
在參數中,其含義為:
params[:children] -->
{"1" =>{"foo"=>"x", "bar"=>"y", "baz"=>"z"},
"2" =>{"foo"=>"x", "bar"=>"y", "baz"=>"z"},
"3" =>{"foo"=>"x", "bar"=>"y", "baz"=>"z"}}
我知道將對象的一個實例列入白名單,我會使用:
params.require(:child).permit(:foo, :bar, :baz)
有沒有類似的方法可以允許完整列出兒童參數?
作為參考,我將使用代碼的更新塊:
def update_children_on_parent
@children.each do |child|
child_params = update_params.select{|key, value| key == child.id}
child.update(child_params)
end
end
其中update_params是列入白名單的子級參數列表
在更新功能中,允許的參數分別而不是作為預定義的白名單。
給定
params[:children] -->
{
"1" =>{"foo"=>"x", "bar"=>"y", "baz"=>"z"},
"2" =>{"foo"=>"x", "bar"=>"y", "baz"=>"z"},
"3" =>{"foo"=>"x", "bar"=>"y", "baz"=>"z"}
},
更新功能的工作方式如下:
@children.each do |child|
child_params = params[:children].select{|key, value| key == child.id.to_s}["#{child.id}"]
child.update(child_params.permit(:foo, :bar, :baz))
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.