为什么你必须使用fetch for Rails参数?

sta*_*lei 2 parameters ruby-on-rails

文档中,他们有:

params = ActionController::Parameters.new(person: { name: "Francesco" })
Run Code Online (Sandbox Code Playgroud)

然后params.fetch(:person)用来取人,但你不能这样做params[:person]吗?获得相同的数据?

jvi*_*ian 5

我想这取决于你想要的行为.

params = ActionController::Parameters.new
params.fetch(:person)
Run Code Online (Sandbox Code Playgroud)

会引发错误.如文档中所反映的fetch,如果您愿意,可以指定进一步的行为.

params = ActionController::Parameters.new
params[:person]
Run Code Online (Sandbox Code Playgroud)

会回来nil.