我想在Active Admin的标题处添加link_to(“编辑您的个人资料”,编辑用户(current_user))等链接。 这可能吗?!
答案 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