Как установить приоритет родительского меню в ActiveAdmin?

У меня есть несколько моделей в моем приложении Ruby on Rails, таком как "План", "Тестер", "Модуль" и т.д. Используя жёсткий диск activeadmin, я хотел бы иметь страницу для каждого из этих объектов, несколько разных меню. Поэтому мой код выглядит следующим образом:

ActiveAdmin.register Plan do
  menu parent: 'Planning', priority: 1

ActiveAdmin.register Tester do
  menu parent: 'Planning', priority: 2

ActiveAdmin.register Module do
  menu parent: 'Bundle', priority: 1

ActiveAdmin.register User do
  menu parent: 'Administration', priority: 1

У меня нет страницы для верхних меню ( "Планирование", "Пакет", "Администрирование" ), но я хочу видеть их в пользовательском порядке, а не в алфавитном порядке. Итак, мой вопрос: как установить приоритет (порядок) родительского меню без соответствующей страницы для каждого из них?

Ответ 1

Элементы, которые не основаны на модели, начинают свой приоритет с 10, поэтому вы можете поставить 10+ приоритет для меню на основе модели. Если вам нужно установить приоритеты среди немодельных меню, вы можете создать поддельный файл под папкой администратора, например admin/Administration.rb, с кодом:

ActiveAdmin.register_page "Administration" do
  menu :label => "Administration", :priority => 15, :url => '#'
end

и admin/bundle.rb:

ActiveAdmin.register_page "Bundle" do
  menu :label => "Bundle", :priority => 16, :url => '#'
end

so on

Ответ 2

См. "Настройка элементов родительского меню" в документации.

# config/initializers/active_admin.rb
config.namespace :admin do |admin|
  admin.build_menu do |menu|
    menu.add label: 'Blog', priority: 0
  end
end

# app/admin/post.rb
ActiveAdmin.register Post do
  menu parent: 'Blog'
end