我是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)甚至方法调用?
我将不胜感激任何帮助。谢谢
答案 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
注册的翻译,且当前的语言环境是日语。