【问题标题】:Rails + Active Admin: Display nameRails + Active Admin:显示名称
【发布时间】:2013-04-27 19:23:13
【问题描述】:

我正在将 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_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 中进行了搜索,但找不到方法。

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby web-applications activeadmin


    【解决方案1】:

    试试

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

    你可以在lib/active_admin/application.rb找到这个设置

    【讨论】:

    • 我想我的项目中没有那个文件。我尝试创建它并将该代码放在那里,但它不起作用。我还尝试将该代码放入config/initializers/active_admin.rb,但也没有好的结果。我发现在 Active Admin 源代码中有一些类似你的代码:github.com/gregbell/active_admin/blob/master/lib/active_admin/… 也许我们必须把它放在其他文件中?
    • 它适用于我使用 AA 0.6.0 的项目。我在config/initializers/active_admin.rb 中定义了config.display_name_methods = [:admin_display_name, ....]。请务必重新启动您的应用。
    • @eze.scaruli 应该被标记为正确答案。请注意,配置可以在不同的地方,对我来说是在config/initializers/active_admin.rb
    【解决方案2】:

    您也可以使用:title 键为每个页面定义它,如下所示:

    show(title: 'Something') do |record|
      ...
    end
    
    # or with a Proc
    show(title: ->(record) { record.another_method_to_display }) do |record|
      ...
    end
    

    【讨论】:

      猜你喜欢
      • 2012-03-20
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多