4

我正在将 Active Admin 与 Ruby on Rails 一起使用,但在面板中显示某些模型的方式时遇到了问题。

以类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

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

我无法更改方法的名称,因为我display_name在项目中的很多文件中使用,并且更改它可能会在应用程序中引入错误。

这种情况的理想解决方案是使用类似于active_admin_nameActive 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 回答
0

您还可以使用:titlekey 为每个页面定义它,如下所示:

show(title: 'Something') do |record|
  ...
end

# or with a Proc
show(title: ->(record) { record.another_method_to_display }) do |record|
  ...
end
于 2021-04-15T13:07:20.227 回答