3

除了注册页面/模型之外,如何将您自己的自定义链接动态添加到ActiveAdmin全局导航标题?例如,如果我想要一个可以将用户引导到我的主页的链接。Active Admin导航链接

回答

1

我设法通过将ActiveAdmin :: MenuItem添加到当前AdminAdmin控制器。例如,

ActiveAdmin.register User, :name_space => :example_namespace do 
    controller do 
    private 
    def current_menu 
     item = ActiveAdmin::MenuItem.new :label => "Link Name", :url => 'http://google.com' 
     ActiveAdmin.application.namespaces[:example_namespace].menu.add(item) 
     ActiveAdmin.application.namespaces[:example_namespace].menu 
    end 
    end 
end 

我基本上创建了一个新ActiveAdmin ::菜单项,并将其与命名空间example_namespace添加到当前ActiveAdmin菜单,并在current_menu方法的最后返回菜单。注意:current_menu是一种预期的方法ActiveAdmin所以不要更改它的名称。您可以添加任意数量的项目,并将这些项目中的每一个都转换为导航标题上的链接。请注意,这适用于ActiveAdmin版本> 0.4.3,因此如果您想为版本< = 0.4.3执行此操作,您可能需要进行自己的挖掘。

+0

不错的工作!我很高兴你发布了这个问题和答案! – Ivan 2012-07-19 22:25:37

+0

我很高兴它有助于:) – RubyFanatic 2012-07-19 23:46:44

0

您可以在活动管理员初始值设定程序中配置网站标题。例如:

config.site_title_link = "/" 

这会给你一个链接到你的根页面。

2

看起来像ActiveAdmin使它更容易。我升级到版本0.6.2,您可以在导航中的任意位置添加自定义链接(以下示例将添加一个自定义菜单项和一个自定义下拉列表):

在#config/initializers/active_admin .RB

ActiveAdmin.setup do |config| 
    config.namespace :admin do |admin| 
    admin.build_menu do |menu| 
     menu.add :label => "My Custom Link", :url => "/", :priority => 0 

     menu.add :label => "Pages" do |pages| 
     pages.add :label => "Homepage", :url => "/admin/homepage" 
     pages.add :label => "About Us", :url => "/admin/about-us" 
     pages.add :label => "Facebook", :url => "http://www.facebook.com", :html_options => { :target => "_blank" } 
     end 
    end 
    end 
end 

如果您已经注册型号“的页面”作为父菜单(即:在您的应用程序/管理/文件夹,用menu :priority => 2, parent: 'Pages'模型),它会保持这些以及自动!

1
ActiveAdmin.register AdminPage do 
    menu :url => proc{ "#{AppConfig.url}/checkins/#{current_admin_user.try(:id)}" } 
end 

在这里,您可以使用URL参数中的任何db字段值来构建自己的URL。

+1

无需使用''''url: - > {“#{request.base_url} /”}''' – 2017-04-22 07:35:56

+0

感谢Man :) @jakub – 2017-04-24 10:21:54