2013-04-27 3 views
1

J'utilise Active Admin avec Ruby on Rails et j'ai un problème avec la façon dont certains modèles sont affichés dans le panneau. En prenant la classe User comme exemple, si je ne définis aucune méthode pour l'afficher amical, je vois #<User:00000006b47868>. So Active Admin suggère d'implémenter une méthode pour spécifier, pour chaque classe, comment l'afficher.Rails + Active Admin: Nom d'affichage

Selon la documentation (http://activeadmin.info/docs/3-index-pages/index-as-table.html), Admin actif cherche une de ces méthodes pour deviner ce que pour afficher, dans l'ordre suivant:

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

donc avoir cette méthode dans la classe User résoudrait le problème:

Cependant, avant d'utiliser l'administrateur actif, j'utilisais déjà la méthode display_name avec d'autres fins (par exemple, en v iews) afin de montrer le nom d'utilisateur d'une manière amicale, et je ne veux pas montrer la même chose dans le panneau Active Admin.

Je ne peux pas changer le nom de la méthode parce que j'utilise display_name dans beaucoup de fichiers le long du projet, et le changer introduirait probablement des bogues dans l'application.

Une solution idéale pour ce cas serait d'avoir quelque chose comme une méthode active_admin_name utilisée par Active Admin pour afficher les modèles dans son panneau. Donc la question est:

Est-il possible d'avoir une méthode qui est appelée par Active Admin au lieu de display_name? Par exemple, pour résultat dans l'ordre suivant:

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

J'ai cherché dans la documentation active d'administration et config/initializers/active_admin.rb, mais je ne pouvais pas trouver un moyen de le faire.

Merci!

Répondre

3

Essayez

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

Vous pouvez trouver ce paramètre dans lib/active_admin/application.rb

+0

Je pense que je n'ai pas ce fichier dans mon projet. J'ai essayé de le créer et de mettre ce code là, mais ça n'a pas marché. J'ai aussi essayé de mettre ce code dans 'config/initializers/active_admin.rb', mais pas de bons résultats non plus. J'ai trouvé que dans le code source Active Admin il y a un code comme le vôtre: https://github.com/gregbell/active_admin/blob/master/lib/active_admin/application.rb Peut-être que nous devons le mettre dans un autre fichier? –

+0

Cela fonctionne pour mon projet qui utilise AA 0.6.0. J'ai défini 'config.display_name_methods = [: admin_display_name, ....]' dans 'config/initializers/active_admin.rb'. Assurez-vous de redémarrer votre application. – baxang

Questions connexes