我正在使用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
然而,在使用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
中搜索过,但没有找到一种方法来做到这一点。谢谢!
config/initializers/active_admin.rb
中,但也没有好的结果。我发现在 Active Admin 源代码中有一些类似于你的代码:https://github.com/gregbell/active_admin/blob/master/lib/active_admin/application.rb 也许我们需要将其放在其他文件中? - eze.scaruliconfig/initializers/active_admin.rb
中。 - Alexander Presber