问题 如何在ActiveAdmin中设置父菜单优先级?


我在Ruby on Rails应用程序中有几个模型,如“Plan”,“Tester”,“Module”等。使用activeadmin gem,我想为每个实体创建一个页面,并将每个模块放在几个不同的菜单。所以我的代码如下所示:

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

我没有顶级菜单的页面('Planning','Bundle','Administration'),但我希望以自定义顺序而不是按字母顺序查看它们。所以,我的问题是如何设置父菜单的优先级(顺序),而不是每个菜单都有相应的页面?


11359
2018-02-17 17:29


起源

重复 stackoverflow.com/questions/13910416/... - Piers C


答案:


非基于模型的项目从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

等等


14
2018-02-19 10:57



我应该为每个人分别提供一份文件吗?文件名应该是单数还是复数? - moorara
您可以根据需要命名文件,是的,您可以在1个文件中使用它们。 - dsounded
对不起 - 我不明白你答案中的第一句话。你说的是什么 非基于模型 项目从10开始优先。然后你说可以使用优先级 基于模型 物品从10开始。那是一样的...... ???你能澄清一下吗?谢谢。 - awenkhh
您的项目没有页面/模型(如主题 - 启动器的“管理”页面)是假的(非基于模型)。具有模型(真实页面)的项目是基于模型的。 - dsounded
我的意思是,如果你不像我描述的那样创建一个假项目,那么该项目的优先级将是10+,但如果你创建假,你可以处理它的优先级设置 - dsounded


请参阅中的“自定义父菜单项” 文件

# 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

1
2017-10-31 21:03