我的控制器正在接收这个参数
{"utf8"=>"✓",
"_method"=>"patch",
"authenticity_token"=>"r5KaLCrb1PR//q4HZ0p30dUeK1OHE7cjtoken=",
"servidor"=>
{"nome"=>"USER NAME",
"tipo"=>"1",
"lotacao_ids"=>{"1"=>["", "86", "13"], "2"=>["", "86"], "3"=>["", "66","103","69"]},
"contatos_attributes"=>{"0"=>{"telefone"=>"9229-8396 ", "id"=>"453"}},
"matricula"=>"8741883",
"cpf"=>"16450724870"},
"action"=>"update",
"controller"=>"servidores",
"id"=>"238"}
但经过
之后params.require(:servidor).permit(:nome, :tipo, :matricula, :cpf, :contatos_attributes=>[:telefone,:id],:lotacao_ids=>{})
结果
{"nome"=>"USER NAME",
"tipo"=>"1",
"matricula"=>"8741883",
"cpf"=>"16450724870",
"contatos_attributes"=>{"0"=>{"telefone"=>"9229-8396 ", "id"=>"453"}},
"lotacao_ids"=>{}}
我如何能够lotacao_ids
收到我的参数lotacao_ids=>{1=>86, 2=>86, 3=>66}
TNKS
在@phoet
的帮助下回答 def servidor_params
params.require(:servidor).permit(:nome, :tipo, :matricula, :cpf, :contatos_attributes=>[:telefone,:id]).tap do |whitelisted|
whitelisted["lotacao_ids"] = params[:servidor]["lotacao_ids"]
end
end
答案 0 :(得分:3)
你想要做的事情违背了强参数的想法,因为你基本上无法控制lotacao_ids
的哈希值。
请注意,如果在指向哈希的键中使用permit,则不会 允许所有哈希。您还需要指定内部的属性 哈希应该列入白名单。
你给出的参数的一部分作为一个例子表明这实际上应该是一个id数组而不是一个哈希?
在任何情况下,如果您不关心该字段的内容,您仍然可以将其合并到您在首先允许内容后获得的哈希值中。它仍然只是一个哈希...