2013-07-11 10 views
8

Die ActiveAdmin docs sagen, dass ich das Dienstprogramm Navigation wie dies außer Kraft setzen kann:Rails ActiveAdmin - get current_admin_user in Utility-Navigation?

ActiveAdmin.setup do |config| 
    config.namespace :admin do |admin| 
    admin.build_menu :utility_navigation do |menu| 
     menu.add label: "ActiveAdmin.info", url: "http://www.activeadmin.info", html_options: { target: :blank } 
     admin.add_logout_button_to_menu menu # can also pass priority & html_options for link_to to use 
    end 
    end 
end 

Er sagt auch, dass die Standard-Display-Adresse des aktuellen Benutzers E-Mail enthält. Wie erhält es die E-Mail-Adresse des aktuellen Benutzers? Wenn ich versuche, den Wert menu.add label durch current_admin_user zu ersetzen, erhalte ich einen Fehler, der besagt, dass current_admin_user nicht definiert ist. Wie kann ich über die Konfigurationsdatei auf den aktuell angemeldeten Benutzer zugreifen? Wie macht ActiveAdmin es hinter den Kulissen?

Antwort

9
config.namespace :admin do |admin| 
     admin.build_menu :utility_navigation do |menu| 
     menu.add :label => proc{ display_name current_active_admin_user }, 
        :url => proc{ edit_admin_admin_user_path(current_active_admin_user) } ,#link_to current_active_admin_user, 
        :id  => 'current_user', 
        :if  => proc{ current_active_admin_user? } 
     admin.add_logout_button_to_menu menu 
     end 
    end 
+0

Sie für den Code danken. Kannst du erklären, warum es hinter den Kulissen funktioniert und warum ich den Fehler bekommen habe, den ich bekommen habe? – Kvass

+0

es funktioniert wegen der Verwendung von Procs, die im benötigten Kontext aufgerufen werden, so dass current_admin_user im Moment des Aufrufs von proc definiert ist – Fivell

+0

Ok, cool danke. Auch eine Art von nicht verwandten q - wenn ein Block ein Proc ist (zu meinem Verständnis), warum kann ich nicht in einem Block, z. ': if => {current_active_admin_user? } 'und überspringe den' proc' davor? Was genau macht der 'proc' davor? – Kvass

3

versuchen Sie einfach die folgenden Schritte aus:

ActiveAdmin.setup do |config| 
    config.namespace :admin do |admin| 
    admin.build_menu :utility_navigation do |menu| 
     menu.add label: "ActiveAdmin.info", url: "http://www.activeadmin.info", 
             html_options: { target: :blank } 
     admin.add_current_user_to_menu menu 
     admin.add_logout_button_to_menu menu 
    end 
    end 
end 
Verwandte Themen