Ruby on rails Ruby哈希语法

Ruby on rails Ruby哈希语法,ruby-on-rails,ruby,syntax,haml,Ruby On Rails,Ruby,Syntax,Haml,我是ruby新手,正在尝试适应新的语法。 这是我参与的项目中的一行代码,在页脚上有一个简单的描述 这显示了本地公司的编号,但第二行的语法让我有点困惑 %dt Indonesia %dd{ itemprop: 'telephone' }= I18n.with_locale(:id) { t('meta.phone_number') } 所以{itemprop:'telephone'}只是一个将符号itemprop映射到值'telephone'的块,但是为什么在I18n.with_locale

我是ruby新手,正在尝试适应新的语法。 这是我参与的项目中的一行代码,在页脚上有一个简单的描述 这显示了本地公司的编号,但第二行的语法让我有点困惑

%dt Indonesia
  %dd{ itemprop: 'telephone' }= I18n.with_locale(:id) { t('meta.phone_number') }
所以{itemprop:'telephone'}只是一个将符号itemprop映射到值'telephone'的块,但是为什么在I18n.with_locale(:id)之间有“=”?它有什么作用? 另外,第三个块{t('meta.phone_number')}是I18n.with_locale(:id)的参数吗? 或者I18n.with_locale(:id)甚至是一个方法调用

我将感谢任何帮助。谢谢

  • %dd
    :告诉Haml发出一个
    标记
  • {itemprop:'telephone'}
    :告诉Haml当前标记应该有一个值为
    telephone
    的属性
    itemprop
  • =
    :告诉Haml将当前标记的文本内容设置为Ruby表示行的其余部分计算结果的内容
  • I18n.with_locale(:id){…}
    :告诉Ruby
    I18n
    上调用带有一个参数(符号
    :id
    )和一个块的方法
  • t('meta.phone\u number')
    :告诉Ruby用一个参数(string
    meta.phone\u number
    )调用
    t
    助手方法
总而言之,它应该生成如下内容:

<dd itemprop="telephone">電話番号</dd>
電話番号

如果電話番号 是为
meta.phone\u number
注册的翻译,当前语言环境是日语。

其中一半是HAML语法,而不是ruby/hash语法。实际上,你为什么不通读一遍呢?它将回答这些问题中的大多数。%dd标记用于描述描述列表中的术语/名称