在ActiveAdmin的标题菜单中添加自定义项

时间:2012-03-08 15:28:05

标签: ruby-on-rails activeadmin

我想在Active Admin的标题处添加link_to(“编辑您的个人资料”,编辑用户(current_user))等链接。 这可能吗?!

5 个答案:

答案 0 :(得分:15)

最新版本的ActiveAdmin允许您在active_admin.rb初始化程序中执行此操作:

config.namespace :admin do |admin|
  admin.build_menu do |menu|
    menu.add :label => 'Custom Menu' do |submenu|
      submenu.add :label => 'Custom Link', :url => custom_path
    end
  end
end

答案 1 :(得分:12)

对于最新版本的活动管理员,有两种解决方案,两种都是不幸的。

menu false的任何资源都可以设置为menu label: "Google", url: "http://www.google.com"。这很不幸,因为如果您使用的是设置它的资源,则会将其突出显示为已选中。

另一种解决方案是覆盖ActiveAdmin::Views::Header,如上所述,但已更新。

module ActiveAdmin
  module Views
    class Header < Component

      def build_global_navigation
        item = ActiveAdmin::MenuItem.new(label: "google", url: "http://www.google.com")
        @menu.add item
        insert_tag view_factory.global_navigation, @menu, :class => 'header-item'
      end
    end
  end
end

这不能完全正确,因为您无法为菜单项设置parent: "Developer"之类的内容...... 无论如何,我可以创建一个fork,这样你就可以在初始化器中添加项目到特定的命名空间......有人为此打开了一个问题吗?我没有看到一个。

更新: 我认为这是实现这一目标最简洁的方法(没有为主动管理员做出贡献)。

ActiveAdmin.register_page "Queue" do
  menu parent: "Developer", url: '/admin/resque'
end

答案 2 :(得分:6)

如果您使用的是具有自定义页面功能的ActiveAdmin更高版本,则可以执行以下操作:

 ActiveAdmin.register_page "Store Admin" do
   controller do
     define_method(:index) do
       redirect_to "/store/admin"
     end
   end
 end

这会覆盖通常只是呈现页面的PageController的index操作,但您可以将其重定向到您想去的任何位置,例如edit_user_path

答案 3 :(得分:0)

对我来说,@ kristinalim回答几乎可以用,但是他的custom_path不起作用,这给了我一个错误。下一个代码对我有用(我必须定义路线)

routes = Rails.application.routes.url_helpers
config.namespace :admin do |admin|
    admin.build_menu do |menu|
        menu.add :label => 'Custom Menu' do |submenu|
            submenu.add label: 'Users', url: routes.admin_users_path
        end
    end
end

答案 4 :(得分:-1)

根据@phoet提到的帖子,(https://stackoverflow.com/a/7218598/445908)尝试这段代码:

module ActiveAdmin
  module Views
    class HeaderRenderer
      def to_html
        title + global_navigation + profile_link + utility_navigation
      end

      def profile_link
        link_to ("Edit yout profile", edit_user (current_user))
      end
    end
  end
end