2013-04-27 9 views
1

Я использую Active Admin с Ruby on Rails, и у меня возникла проблема с тем, что некоторые модели отображаются на панели.Rails + Active Admin: Отображаемое имя

Взяв класс User в качестве примера, если я не определяю какой-либо метод для его удобства, я вижу #<User:00000006b47868>. Таким образом, Active Admin предлагает реализовать метод для каждого класса, чтобы показать его.

Согласно документации (http://activeadmin.info/docs/3-index-pages/index-as-table.html), Активный Администратор ищет один из этих методов, чтобы догадаться, что для отображения, в следующем порядке:

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

Итак, имеющих этот метод в User классе будет решить проблема:

Однако, перед использованием активного Администратора, я уже использовал метод display_name с другими целями (например, в ст iews), чтобы показать имя пользователя дружелюбно, и я не хочу показывать то же самое в панели 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

Я искал в активной документации администратора и в config/initializers/active_admin.rb, но я не мог найти способ сделать это.

Спасибо!

ответ

3

Попробуйте

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

Вы можете найти этот параметр в lib/active_admin/application.rb

+0

Я думаю, у меня нет этого файла в моем проекте. Я попытался создать его и поставить там код, но он не сработал. Я также попытался поместить этот код в 'config/initializers/active_admin.rb', но никаких хороших результатов не было. Я обнаружил, что в исходном коде Active Admin есть такой код, как ваш: https://github.com/gregbell/active_admin/blob/master/lib/active_admin/application.rb Возможно, нам нужно разместить его в другом файле? –

+0

Он работает для моего проекта, который использует AA 0.6.0. Я определил 'config.display_name_methods = [: admin_display_name, ....]' в 'config/initializers/active_admin.rb'. Убедитесь, что вы перезагрузили приложение. – baxang

Смежные вопросы