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

我想在ActiveAdmin的标题处添加link_to(“Edit yout profile”,edit_user(current_user))等链接。 那可能吗 ?!

最新版本的ActiveAdmin允许您在active_admin.rb初始值设定项中执行此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 

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

任何带有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"东西parent: "Developer"的菜单项…无论如何,我可以做一个分叉,这样你就可以在初始化器中添加项目到特定的命名空间…有人为此打开了一个问题吗? 我没有看到一个。

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

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

如果您使用的是具有自定义页面function的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

根据@phoet提到的post,( 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