4

Ruby on Rails で Active Admin を使用していますが、一部のモデルがパネルに表示される方法に問題があります。

クラスUserを例にとると、わかりやすいように表示するメソッドを定義しないと、#<User:00000006b47868>. そのため、Active Admin は、クラスごとに表示方法を指定する方法を実装することを提案しています。

ドキュメント ( http://activeadmin.info/docs/3-index-pages/index-as-table.html ) によると、Active Admin はこれらの方法のいずれかを探して、何を表示するかを次の順序で推測します。

:display_name, :full_name, :name, :username, :login, :title, :email, :to_s

したがって、クラス内にこのメソッドUserを含めると、問題が解決します。

def display_name
  return self.id.to_s + '-' + self.full_name
end

ただし、アクティブ管理を使用する前に、ユーザー名をわかりやすい方法で表示するために、他の目的 (ビューなど) で既にこの方法display_nameを使用していましたが、アクティブ管理パネルで同じことを表示したくありません。

プロジェクトに沿って多くのファイルで使用しているため、メソッドの名前を変更できません。名前をdisplay_name変更すると、アプリケーションにバグが発生する可能性があります。

この場合の理想的な解決策はactive_admin_name、Active Admin がパネルにモデルを表示するために使用するメソッドのようなものを用意することです。質問は次のとおりです。

の代わりに Active Admin によって呼び出されるメソッドを持つ方法はありdisplay_nameますか? たとえば、次の順序になります。

:active_admin_name, :display_name, :full_name, :name, :username, :login, :title, :email, :to_s

Active Admin のドキュメントと を検索しましたconfig/initializers/active_admin.rbが、それを行う方法が見つかりませんでした。

ありがとう!

4

2 に答える 2

10

試す

ActiveAdmin.setup do |config|    
  config.display_name_methods = [:active_admin_name, :display_name ...]
end

この設定は次の場所にあります。lib/active_admin/application.rb

于 2013-04-27T19:42:54.020 に答える