5

翻译某些字段的 DRY 方式是什么?

在我的 RESTful 视图中,我有一些重复的片段,例如在显示视图中:

...
<dt><%= t("activerecord.attributes.user.firstname") %></dt>
<dd><%= @user.firstname %></dd>
...

现在,t("activerecord.attributes.user.attr_name")我不想一遍又一遍地写,我只想写t(:attr_name)(类似于f.label :firstname在表单视图中)。

基本上,这应该不是问题(至少对于 RESTful 视图),因为 I18n 模块可以查询controller方法来推断模型名称,然后只需猜测正确的翻译字符串。

我的问题:有人对这种方法有实际经验吗?它甚至可以有一个 RubyGem 吗?或者:有没有我没有想到的陷阱?

4

2 回答 2

6

我似乎,ActiveModel::Translation#human_attribute_name做的伎俩(例如<%= User.human_attribute_name :firstname %>)。

于 2012-09-12T08:22:56.050 回答
2

推荐的方法是把它放在一个部分(例如app/views/user/_form.html.erb或什app/views/user/_user.html.erb至)中,然后在名称前加上一个前导点,因此:

<dt><%= t(".firstname") %></dt>
<dd><%= user.firstname %></dd>

更多信息:示例(来自Agile Web Development with Rails);Rails 文档

于 2011-07-24T21:39:51.210 回答