mri*_*ula 6 ruby ruby-on-rails
所以,我想了入门的Ruby on Rails的的部分指导这里.
我不明白本教程中的一行.引用它:
该PARAMS方法是代表参数(或场)从表单来的在对象中.
我确实有一些以前的rails经验,我总是假设params是一个哈希.但在这里他们称之为method which is an object.
是params一个method还是一个hash?另外,在ruby中,方法也是对象吗?
Jay*_*rio 13
params是一个返回对象的方法.想想它是这样的:ActionController::Parameters
def params
ActionController::Parameters.new(...)
end
Run Code Online (Sandbox Code Playgroud)
示例(控制器或视图中的某个位置):
puts params
#=> <ActionController::Parameters ...>
puts params.is_a? Object
#=> true
Run Code Online (Sandbox Code Playgroud)Ruby中的方法总是返回一个值(注意:nil也是一个值),除非没有定义该方法.请记住,params即使你的代码中没有看到它已经由Rails定义了)
Ruby中方法的每个"返回值" 都是一个对象.甚至nil价值也是一个NilClass 对象.整数,字符串,数组和哈希也是对象.为什么?因为eveeeeery事物从Object 类继承/开始.
如果<Rails 5.1:
ActionController::Parameters继承自Hash 类,这意味着您可以使用所有Hash 方法(请参阅此处的哈希方法).
例:
params.sort ...
params.each ...
params.has_key?(:controller)
Run Code Online (Sandbox Code Playgroud)但现在在> = Rails 5.1:
描述有点截断.确切地说,它应该被理解为:
该
params方法的返回值是[an]对象...
方法不是对象,但是当您执行方法时,它总是返回一个对象.在这种情况下,params是一个方法,而不是一个对象,但有一个返回值,它是一个对象.
在旧版本的Rails中,返回值params曾经是哈希值,但现在,它不是哈希值.