Ruby哈希语法

时间:2014-09-09 06:24:19

标签: 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(:id)之间有“=”?它有什么作用? 另外,第三个块{t('meta.phone_number')}是I18n.with_locale(:id)的参数吗? 或者是I18n.with_locale(:id)甚至方法调用?

我将不胜感激任何帮助。谢谢

1 个答案:

答案 0 :(得分:2)

  • %dd:告诉 Haml 发出<dd>代码。
  • { itemprop: 'telephone' }:告诉 Haml 当前代码的属性itemprop的值为telephone
  • =:告诉 Haml 将当前标记的文本内容设置为 Ruby 表示该行的其余部分评估为。
  • I18n.with_locale(:id) { ... }:告诉 Ruby 调用with_locale上的方法I18n,使用一个参数(符号:id)和一个块。
  • t('meta.phone_number'):告诉 Ruby 使用一个参数(字符串t)调用meta.phone_number辅助方法。

总而言之,它应该产生这样的东西:

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

如果电话番号是为meta.phone_number注册的翻译,且当前的语言环境是日语。