Я хочу добавить ссылку, например link_to ( "Редактировать профиль yout", edit_user (current_user)) в заголовке ActiveAdmin. Это возможно?!
Добавление пользовательских элементов в меню заголовка в ActiveAdmin
Ответ 1
Последние версии 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
Ответ 2
Для последних версий активного администратора есть два решения, оба из которых являются неудачными.
Любые ваши ресурсы с помощью 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
Ответ 3
Если вы используете более позднюю версию 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
Ответ 4
Для меня ответ @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
Ответ 5
согласно сообщению, указанному @phoet, (fooobar.com/info/589616/...) попробуйте этот код:
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