2

データベースの検索に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に属性の正しい名前を直接伝えます。

いずれにせよ、私はこれを行う方法を見つけられなかったので、誰かが解決策を持っているなら、私は本当にそれをいただければ幸いです。他の解決策も歓迎されます。

よろしくお願いします!

4

1 に答える 1