gpt4 book ai didi

ruby-on-rails - Rails 参数方法 : Why can it be accessed like a hash?

转载 作者:行者123 更新时间:2023-12-05 08:21:54 25 4
gpt4 key购买 nike

查看这段代码:

参数[:id]

Params 被认为是一种方法。如果我在那里错了,请纠正我。但这就像从哈希中读取一样。所以,我目前很困惑。

如果 params 是一个方法:显示的代码示例如何工作?

最佳答案

params 是一个方法,你是对的,但是这里的 params 方法返回一个 ActionController::Parameters 的实例,我们调用 hash访问器方法 #[] 就可以了。

这是 ruby​​ 中调用返回对象方法的常见模式。让我们通过一个简单的例子来看一下:

def params
{
id: 101,
key: 'value',
foo: 'bar'
}
end

params[:id] # => 101
params[:foo] # => 'bar'

正如您在示例中看到的,方法 params 返回一个哈希对象,我们在返回的对象上调用哈希访问器方法 #[]

对 rails params 方法的引用:https://github.com/rails/rails/blob/5e1a039a1dd63ab70300a1340226eab690444cea/actionpack/lib/action_controller/metal/strong_parameters.rb#L1215-L1225

def params
@_params ||= begin
context = {
controller: self.class.name,
action: action_name,
request: request,
params: request.filtered_parameters
}
Parameters.new(request.parameters, context)
end
end

ruby 初学者须知:在ruby 中,我们可以调用不带括号的方法。所以,上面的调用等同于 params()[:id]

关于ruby-on-rails - Rails 参数方法 : Why can it be accessed like a hash?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69505389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com