所以,我正在尝试入门Ruby on Rails 指南部分here http://guides.rubyonrails.org/getting_started.html.
我不明白line http://guides.rubyonrails.org/getting_started.html#creating-articles在本教程中。引用它:
The 参数方法是表示来自表单的参数(或字段)的对象。
我以前确实有一些 Rails 方面的经验,而且我一直认为params
是一个哈希值。但在这里他们称之为method which is an object
.
Is params
a method
or a hash
?另外,在 Ruby 中,方法也是对象吗?
-
params
is a method返回一个ActionController::Parameters
object。想像一下这样:
def params
ActionController::Parameters.new(...)
end
示例(在控制器或视图中的某个位置):
puts params
#=> <ActionController::Parameters ...>
puts params.is_a? Object
#=> true
A method在 Ruby 中总是返回一个value (note: nil
也是一个value)除非那样method没有定义。但请记住params
即使您在代码中没有看到它,Rails 已经定义了它)
a 的每个“返回值”method在 Ruby 中是object. Even nil
值是一个NilClass
object。整数、字符串、数组和哈希也是objects。为什么?因为 eveeeeery 事物继承/开始于Object
class.
-
如果
-
但现在 >= Rails 5.1:
-
ActionController::Parameters
NO LONGER inherits from Hash
class, so you would think that you can no longer use methods such as the above code like .sort
, or .has_key?
, but you still can! because ActionController::Parameters
defines its own custom methods that "look like" methods from a Hash
.
-
NOTE:并非所有 Hash 方法都在中重新定义
ActionController::Parameters
。随意比较这些方法HERE http://api.rubyonrails.org/classes/ActionController/Parameters.html and HERE https://apidock.com/ruby/Hash, 尤其sort
方法是Hash
方法没有被重新定义ActionController::Parameters
,所以你不能这样做params.sort
Rails >= 5.1 中不再有此功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)