Добавить пользовательские элементы в верхнем меню ActiveAdmin - PullRequest
13 голосов
/ 08 марта 2012

Я хочу добавить ссылку вроде link_to («Редактировать свой профиль», edit_user (current_user)) в заголовок в ActiveAdmin.Это возможно?!

Ответы [ 5 ]

16 голосов
/ 02 октября 2013

Последние версии 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
12 голосов
/ 26 сентября 2012

Для последних версий активного администратора есть два решения, оба вида неудачных.

Любой из ваших ресурсов с 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" для пункта меню ... В любом случае, я могу сделать форк, чтобы вы могли добавлять элементы инициализатора в определенное пространство имен ... Кто-нибудь открыл для этого проблему? Я не видел ни одного.

Обновление: Я думаю, что это самый чистый способ реализовать это (без участия активного администратора).

ActiveAdmin.register_page "Queue" do
  menu parent: "Developer", url: '/admin/resque'
end
6 голосов
/ 05 декабря 2012

Если вы используете более позднюю версию ActiveAdmin, которая поддерживает пользовательские страницы, вы можете сделать следующее:

 ActiveAdmin.register_page "Store Admin" do
   controller do
     define_method(:index) do
       redirect_to "/store/admin"
     end
   end
 end

Это переопределяет действие index PageController, который обычно просто отображает страницу, но вместо этого вы можете перенаправить его туда, куда хотите, например edit_user_path

0 голосов
/ 11 июля 2019

Мне ответ @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
0 голосов
/ 29 марта 2012

в соответствии с постом, упомянутым @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
...