データベースの検索にRails3.2とRansack0.7を使用していますが、モデルの属性の表示名に問題がありました。ビューの属性フィールドは、標準条件フィールドで呼び出されます。
<%= f.attribute_fields do |a| %>
<%= a.attribute_select( {}, { :class =>"formee-small" } ) %>
<% end %>
モデルでは、私の属性フィールドは次のように定義されています。
UNRANSACKABLE_ATTRIBUTES = ["id"]
def self.ransackable_attributes auth_object = nil
(column_names - UNRANSACKABLE_ATTRIBUTES) + _ransackers.keys
end
ここで、「username」という属性があり、ビューでは「Username」と表示されるとします。翻訳したい場合は、翻訳を標準のロケールファイルに入れる必要があります。これは、英語版の場合はen.yml、ドイツ語版の場合はde.ymlになります。
ここに問題があります:
このソリューションは、モデルとその属性を知っている限り、正常に機能します。しかし、私は非常に複雑なアプリケーションを持っています。これにより、ユーザーは独自のMVC(モデル、ビュー、コントローラー)を作成し、それを使用して独自の翻訳を作成できます。ユーザーが作成したMVCのRansack検索フォームに表示される名前を除いて、これはすべての場合に正常に機能します。
したがって、考えられる解決策は次のとおりです。
1)ユーザーが新しいMVCを作成するたび、および属性の翻訳の1つを変更するたびに、ロケールファイルを更新する方法を見つけました。
2)ロケールファイルをバイパスして、RansackまたはRailsに属性の正しい名前を直接伝えます。
いずれにせよ、私はこれを行う方法を見つけられなかったので、誰かが解決策を持っているなら、私は本当にそれをいただければ幸いです。他の解決策も歓迎されます。
よろしくお願いします!