如何使用params.fetch强参数

时间:2017-08-15 15:46:38

标签: ruby-on-rails ruby-on-rails-5

使用rails g scaffold kittens强参数功能时,kitten_params

def kitten_params
  params.fetch(:kitten, {})
end

我熟悉强参数, params.require(:kitten).permit(:name, :age)  但我不确定如何使用fetch方法。

3 个答案:

答案 0 :(得分:21)

  

但我不确定如何使用fetch方法进行此

简单。您没有使用fetch。由于您在创建脚手架时未提供任何属性,因此rails不知道将哪些内容放入permit部分并生成该代码,这对于这种情况最为明智。当您向小猫表单添加一些字段时,请将kitten_params升级为正常的强对数“形状”。

params.require(:kitten).permit(:name, :age)

答案 1 :(得分:5)

根据Documentation,您应该只在末尾添加.permit,例如:

params.fetch(:kitten, {}).permit(:name, :age)

答案 2 :(得分:2)

根据documentation,如果没有对象实例,则不能使用.require
然后.fetch为未创建的对象(#new#create操作)提供默认参数。