2016-04-18 22 views
1

翻訳モデル名を取得する私は、私はこのような何かを表示させたいページのヘッダーを持っています。国際化する方法ビューで

「Aanpassenのbewoner」 「Aanpassenのgebruiker」

「Aanpassenは」編集のためのオランダ。 'bewoner'、 'gebruiker'はSenior、Userの翻訳されたクラス名です。

nl: 
    activerecord: 
    models: 
     user: 
     one: 'Gebruiker' 

(またはヘルパークラスの)ビューに一度ヘッダを書き込むための方法はありますので、それが現在のモデルを取ります

は、私はこのようなファイルでのアクティブレコードクラスを翻訳しています翻訳を表示して表示しますか?理想的には、すべてのクラスの編集ビュー(もちろん翻訳されている限り)で使用できるコードは1行だけです。

答えて

0

現在のコントローラ名から現在のモデル(これは最も難しい部分)を推測してから、それを試みることができます。次のヘルパーは、まさにそれん:

# application_helper.rb 
def translated_model_name(model = controller_name) 
    model_class = model.to_s.singularize.camelize 
    Object.const_defined?(model_class) ? model_class.constantize.model_name.human : model.to_s 
end 

ヘルパーは、モデル名を推測しようとしてから(docsを参照)、それを変換するmodel_name.human方法を使用しています。あなたのテンプレートでこの方法を使用することができます。

# e.g. in users/index.html.erb 
<%= translated_model_name %> 
# => prints translation for the :user model 

# whereas in seniors/show.html.erb 
<%= translated_model_name %> 
# => prints translation for the :senior model 

モデル名が自動的にコントローラ名から推測することができない場合、あなたはヘルパーにパラメーターを指定して、それを上書きすることができます。

# e.g. in some_non_model_path/index.html.erb 
<%= translated_model_name(:user) %> 
# => prints translation for the :user model