Rails:白名单嵌套参数/允许的参数/嵌套形式

Rails: Whitelisting nested parameters / Permitted Parameters / Nested forms

我已经研究 Rails 5.0 许可功能很长一段时间了,但我就是做不好,真的需要一些帮助:

我有这个白名单功能。执行时我得到以下响应:

Unpermitted parameter: studio_users_attributes

我有这个白名单功能

def studio_params
  params.require(:studio).permit(:name, :name_long, :address, :address2,
                                 :zip, :city, :country, :phone,
                                 :entity_id, { studio_users_attributes: [] } ) 
end

params 方法returns 我关注:

{"utf8"=>"✓", "_method"=>"patch", "authenticity_token"=>"VZTPSpsmNJxcqc[...]", 
 "studio"=>{"studio_users_attributes"=>{"0"=>{"viewing_rights"=>"Nur eigene", 
 "id"=>"4"}, "1"=>{"viewing_rights"=>"Alle", "id"=>"5"}}}, 
 "commit"=>"Studio aktualisieren", "controller"=>"studios",
 "action"=>"update", "id"=>"2"
}

非常感谢您的帮助。

菲利普

在您使用的控制器中 studio_users_params

但是你发送studio_users_attributes.

经过更多的试验,我设法解决了它。

对于嵌套参数,我必须明确地将键添加到嵌套哈希中:

def studio_params
params.require(:studio).permit(:name, :name_long, :address, :address2, :zip, 
                               :city, :country, :phone, :entity_id, 
                                studio_users_attributes: [:id, :viewing_rights] ) 

将散列留空 (studio_users_attributes: []),仍会导致

"Unpermitted parameter: studio_users_attributes "