【问题标题】:How to set a parent menu priority in ActiveAdmin?如何在 ActiveAdmin 中设置父菜单优先级?
【发布时间】:2017-11-01 05:03:18
【问题描述】:

我的 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

我没有顶部菜单(“计划”、“捆绑”、“管理”)的页面,但我希望以自定义顺序而不是字母顺序查看它们。所以,我的问题是如何设置父菜单的优先级(顺序)而不为每个菜单设置相应的页面?

【问题讨论】:

标签: ruby-on-rails ruby activeadmin


【解决方案1】:

非基于模型的项目的优先级从 10 开始,因此您可以为基于模型的菜单设置 10+ 优先级。 如果您需要在非基于模型的菜单中设置优先级,您可以在 admin/administration.rb 之类的 admin 文件夹下使用代码构建假文件:

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

和管理员/bundle.rb:

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

等等

【讨论】:

  • 我应该有一个单独的文件吗?文件名应该是单数还是复数?
  • 您可以随意命名文件,是的,您可以在 1 个文件中使用它们。
  • 对不起 - 我不明白你回答中的第一句话。你说的是non-model-based项的优先级从10开始。然后你说可以为 model-based 项目使用从 10 起的优先级。那是一样的...... ???你能澄清一下吗?谢谢。
  • 您的项目,没有页面/模型(如主题启动器的“管理”页面)是假的(非基于模型的)。具有模型(真实页面)的项目是基于模型的。
  • 我的意思是,如果你没有像我描述的那样创建一个假项目,那么该项目的优先级将是 10+,但如果你创建假,你可以处理它的设置优先级
【解决方案2】:

请参阅documentation 中的“自定义父菜单项”。

# 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多