哈希和符号之间的混淆

时间:2018-12-11 10:30:58

标签: ruby-on-rails ruby hash symbols

请帮助我理解哈希背后的概念,尤其是当我们使用符号时。

:name是符号对吗?

我们可以将symbol用作哈希右键的键吗?

:namename:例如:这是两种语法,但是它描述了符号对吗?

当我们有这样的例子时:

Geocode.configure(

units: :km

)

在这里,units对配置函数中称为unit的指定参数进行引用吗?和:km是我们要通过可变单位发送的符号,还是我错了?

最后一个例子:

validates :home_type, presence: true

在这里,我们尝试将符号home_type向右发送给validates函数吗?

,第二个参数命名为“ presence”,我们想通过此变量发送布尔值true吗?

很抱歉,如果您不明白我的问题,请随时询问我。

我对这些语法有很多了解。

非常感谢!

2 个答案:

答案 0 :(得分:1)

Geocode.configure(units: :km)

我们正在将哈希传递给configure方法。此哈希{units: :km}{:units => :km}的方便语法。因此,具有键值对与键符号(:units)和值符号(:km)的哈希。

validates :home_type, presence: true

在这里,我们将符号validates和哈希值:home_type{presence: true}}传递给{:presence => true方法。因此键是:presence符号,值是布尔值true

答案 1 :(得分:1)

这是非常基本的,只是简化了ruby中的约定

validates :home_type, presence: true, if: :check_user

相似
validates :home_type, { :presence => true, :if => :check_user }

所以当我写为时,

link_to 'Edit', edit_path(user), class: 'user_one', id: "user_#{user.id}"

在上面,link_to是ActionHelper方法,它使用3个参数,其中最后一个是哈希{ class: 'user_one', id: "user_#{user.id}" }