strong_params:处理动态嵌套对象/属性数

时间:2014-02-28 19:09:15

标签: ruby-on-rails ruby-on-rails-4 strong-parameters

问题

我有一个模型Foo,它可以接受模型Bar的嵌套属性。对表单中的嵌套模型使用rails约定,form_forfields_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的每个子哈希。

1 个答案:

答案 0 :(得分:0)

使用params.require(:foo).permit(:name, bar_attributes: [:label]}应该可以正常工作,但前提是bar_attributes键是字符串(即'1'和'2'而不是1和2)。