【问题标题】:Active Admin Navigation Links活动管理员导航链接
【发布时间】:2012-07-19 00:28:19
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 rubygems


    【解决方案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::MenuItem 并将其添加到具有命名空间 example_namespace 的当前 ActiveAdmin 菜单中,并在 的末尾返回菜单current_menu 方法。注意:current_menuActiveAdmin 所期望的方法,所以不要更改它的名称。您可以添加任意数量的项目,这些项目中的每一个都将转换为导航标题上的链接。请注意,这适用于 ActiveAdmin 版本 > 0.4.3,因此如果您想为版本

    【讨论】:

      【解决方案2】:

      您可以在活动管理员初始化程序中配置站点标题。例如:

          config.site_title_link = "/"
      

      这将为您提供一个指向您的根页面的链接。

      【讨论】:

        【解决方案3】:

        似乎 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
        

        如果您已经注册了带有“页面”作为父菜单的模型(即:在您的 app/admin/ 文件夹中,带有 menu :priority => 2, parent: 'Pages' 的模型),它也会自动保留这些模型!

        【讨论】:

          【解决方案4】:
          ActiveAdmin.register AdminPage do
            menu :url => proc{ "#{AppConfig.url}/checkins/#{current_admin_user.try(:id)}" }
          end
          

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

          【讨论】:

          • 不需要用url: -> { "#{request.base_url}/"}做AppConfig
          • 谢谢你 :) @jakub
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-15
          • 2013-08-13
          • 1970-01-01
          相关资源
          最近更新 更多