如何使用params.fetch强参数

And*_*ndy 18 ruby-on-rails ruby-on-rails-5

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

def kitten_params
  params.fetch(:kitten, {})
end
Run Code Online (Sandbox Code Playgroud)

我熟悉强参数, params.require(:kitten).permit(:name, :age) 但我不知道如何使用这个fetch方法.

Ser*_*sev 24

但我不知道如何使用这个fetch方法

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

params.require(:kitten).permit(:name, :age)
Run Code Online (Sandbox Code Playgroud)

  • @max`params.fetch(:kitten,{})`是纯Ruby,而不是ActiveSupport :) (4认同)
  • `params.fetch(:kitten,{})`只是一种ActiveSupport方式,用于访问哈希键并在未设置的情况下重新生成默认值.在普通的红宝石中,它会读作"params [:kitten] || {}`. (2认同)

小智 8

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

params.fetch(:kitten, {}).permit(:name, :age)
Run Code Online (Sandbox Code Playgroud)