5

特定のフィールドを翻訳する DRY の方法は何ですか?

私の RESTful ビューには、次のような show-view のように、いくつかの繰り返しスニペットがあります。

...
<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または even app/views/user/_user.html.erb) に入れ、名前の前にドットを付けることです。

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

詳細:( Rails を使用した Agile Web Developmentから); Railsのドキュメント

于 2011-07-24T21:39:51.210 に答える