在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