2013-07-11 23 views
8

的ActiveAdmin文檔說我可以覆蓋實用導航這樣的:Rails ActiveAdmin - 在實用工具導航中獲取current_admin_user?

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 

它還說,默認的顯示包括當前用戶的電子郵件地址。它如何獲取當前用戶的電子郵件地址?當我試着使用current_admin_user更換menu.add label值我得到說current_admin_user是未定義的錯誤。如何從配置文件訪問有關當前登錄用戶的信息? ActiveAdmin如何在幕後做到這一點?

回答

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

謝謝你的代碼。你能解釋爲什麼它在幕後工作,爲什麼我可能得到我得到的錯誤? – Kvass

+0

它的工作原理,因爲使用被稱爲所需的背景特效,讓current_admin_user在進程內調用 – Fivell

+0

好,涼爽的感謝時刻定義。也是一種不相關的q - 如果一個塊是一個proc(據我瞭解),爲什麼我不能通過一個塊,例如':if => {current_active_admin_user? }'並跳過它前面的'proc'?它前面的'proc'到底是做什麼的? – Kvass

3

只是嘗試以下操作:

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