我有一个模型Foo,它可以接受模型Bar的嵌套属性。对表单中的嵌套模型使用rails约定,form_for
和fields_for
创建表单的params
哈希:
{...
:foo => {
:name => "Lunes",
:bar_attributes => {
1 => {
label: "gato"
},
2 => {
label: "perro"
}
}
}
}
但是,strong_params希望我明确地将每个属性列入白名单。
def foo_params
params.require(:foo).permit(:name, bar_attributes: {1: [:label], 2: [:label]}
end
:bar_attributes
中的哈希数是动态的。我是否需要动态生成foo_params
方法,特别是:bar_attributes
哈希?或者有没有办法将我想要的参数列入白名单,而不是:bar_attributes
的每个子哈希。
答案 0 :(得分:0)
使用params.require(:foo).permit(:name, bar_attributes: [:label]}
应该可以正常工作,但前提是bar_attributes
键是字符串(即'1'和'2'而不是1和2)。