【问题标题】:Rails ActiveAdmin - get current_admin_user in utility navigation?Rails ActiveAdmin - 在实用程序导航中获取 current_admin_user?
【发布时间】:2013-07-11 03:17:26
【问题描述】:

ActiveAdmin 文档说我可以像这样覆盖实用程序导航:

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

它还说默认显示包括当前用户的电子邮件地址。它如何获取当前用户的电子邮件地址?当我尝试将 menu.add label 值替换为 current_admin_user 时,我收到一条错误消息,指出 current_admin_user 未定义。如何从配置文件中访问有关当前登录用户的信息? ActiveAdmin 在幕后是如何做到的?

【问题讨论】:

    标签: ruby-on-rails-3 activeadmin


    【解决方案1】:
    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
    

    【讨论】:

    • 感谢您的代码。你能解释一下为什么它在幕后工作以及为什么我可能会收到我遇到的错误吗?
    • 它的工作原理是使用在需要的上下文中调用的 procs,因此 current_admin_user 是在 proc 调用的时刻定义的
    • 好的,非常感谢。也是一种不相关的 q - 如果一个块是一个过程(据我所知),为什么我不能传入一个块,例如:if => { current_active_admin_user? } 并跳过它前面的proc?前面的proc到底是做什么的?
    • 因为 manu.add 应该有 hash 参数,你不能在 hash 元素中存储块,只能存储对象,即 Proc 是。只能为 lsat 参数发送匿名块...我认为您应该阅读此snowfrog.net/2011/08/30/ruby-blocks-and-procs
    • 只是指出,url 部分应该是 edit_admin_admin_path 而不是 edit_admin_admin_user_path
    【解决方案2】:

    只需尝试以下操作:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-03
      • 1970-01-01
      • 2016-09-04
      相关资源
      最近更新 更多