Rails + Active Admin:显示名称

eze*_*uli 2 ruby web-applications ruby-on-rails activeadmin

我正在使用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
Run Code Online (Sandbox Code Playgroud)

但是,在使用Active Admin之前,我已经将该方法display_name用于其他目的(例如,在视图中),以便以友好的方式显示用户名,我不想在Active Admin面板中显示相同的内容.

我无法更改方法的名称,因为我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,但我找不到办法.

谢谢!

Ale*_*ard 6

尝试

ActiveAdmin.setup do |config|    
  config.display_name_methods = [:active_admin_name, :display_name ...]
end
Run Code Online (Sandbox Code Playgroud)

您可以在中找到此设置 lib/active_admin/application.rb

  • @eze.scaruli 应标记为正确答案。请注意,配置可以在不同的地方,对我来说它在`config/initializers/active_admin.rb` 中。 (2认同)