Ruby on rails 是否仍有添加其他级别的菜单和活动管理?

Ruby on rails 是否仍有添加其他级别的菜单和活动管理?,ruby-on-rails,activeadmin,Ruby On Rails,Activeadmin,我正在使用Active Admin并尝试在下拉菜单中添加其他级别。在文档中,我看到我可以使用以下代码设置一个级别: ActiveAdmin.register Post do menu :parent => "Blog" end 谢谢你的帮助 编辑: 我想要这样的东西: Menu 1 ^ Menu 2 > Menu A Menu B Menu 3 如果将多个资源放在菜单中的同一父项下,则下拉列表中的每个资源都有一个级别。对于下面的示例,“博客”选项

我正在使用Active Admin并尝试在下拉菜单中添加其他级别。在文档中,我看到我可以使用以下代码设置一个级别:

  ActiveAdmin.register Post do
    menu :parent => "Blog"
  end
谢谢你的帮助

编辑:

我想要这样的东西:

Menu 1 ^
Menu 2 > Menu A
         Menu B
Menu 3

如果将多个资源放在菜单中的同一父项下,则下拉列表中的每个资源都有一个级别。对于下面的示例,“博客”选项卡将下拉一个包含帖子和评论的菜单。要在“博客”下拉列表中添加更多资源,您只需将其
菜单:parent=>“Blog”

邮政资源

ActiveAdmin.register Post do
  menu :parent => "Blog"
end
ActiveAdmin.register Comment do
  menu :parent => "Blog"
end
评论资源

ActiveAdmin.register Post do
  menu :parent => "Blog"
end
ActiveAdmin.register Comment do
  menu :parent => "Blog"
end

我已经修复了覆盖ActiveAdmin菜单的问题。还需要为新菜单创建一个新的CSS

通知ActiveAdmin我们将使用头本身。为此,在文件config/initializers/active_admin.rb中添加以下行:

config.view_factory.header = CustomAdminHeader
config.register_stylesheet 'new_menu.css'
创建一个名为CustomAdminHeader的类,该类将包含覆盖构造菜单的代码。您可以在app/admin中创建此类,并将文件命名为custom\u admin\u header.rb。并添加以下代码以创建新菜单:

class CustomAdminHeader < ActiveAdmin::Views::Header
  include Rails.application.routes.url_helpers

  def build(namespace, menu)
    div :id => 'tabs' do
      # Add one item without son.
      ul do
        # Replace route_destination_path for the route you want to follow when you receive the item click.
        li { link_to 'Item without son', route_destination_path }
      end

      # Add one item with one son.
      ul do
        li do
          text_node link_to("Parent with 1 child", "#")
          ul do
            li { link_to 'Son without child', route_destination_path }
            # If you want to add more children, including more LIs here.
          end
        end
      end

      # Adds a menu item with one son and one grandson.
      ul do
        li do
          text_node link_to("Grandmother with 1 child", "#")
          ul do
            li do
              text_node link_to("Parent with 1 child", route_destination_path)
              ul do
                li { link_to 'Grandson without child', route_destination_path }
                # If you want to add more grandchildren, including more LIs here.
              end
            end
          end
        end
      end

    super(namespace, menu)
  end
end
最后,您需要创建一个名为new\u menu.CSS的CSS文件,并为新菜单添加CSS

我在我的博客上发布了此解决方案:


我希望它对任何人都有帮助。

您可以在ActiveAdmin.setup配置文件中通过一点css帮助来完成这项工作

首先在ActiveAdmin.setup中添加:

config.namespace :admin do |admin|
  admin.build_menu do |menu|
    menu.add id: 'submenu-id', label: proc { 'SubMenu Title' }, parent: 'Blog', if: proc { current_user.superadmin? } do |submenu_item|
      submenu_item.add label: 'Menu A', url: '/admin/menu_a'
      submenu_item.add label: 'Menu B', url: '/admin/menu_b'
      submenu_item.add label: 'Menu C', url: '/admin/menu_c'
    end
  end
end
然后在active_admin.css.scss中添加一点css以调整视图。大概是这样的:

#submenu-id {
  ul {
    display: none !important;
    position: absolute !important;
    left: 166px;
    margin-top: -30px !important;
  }

  &:hover ul {
    display: block !important;
  }
}
我相信你需要稍微调整你的css。
您将需要在每个ActiveAdmin.register页面中添加“菜单错误”

但它将执行与文档相同的菜单。啊,感谢您最近的编辑,我现在理解了。这不是我能马上想到的。我假设您必须使用一些自定义HTML/CSS或使用ActiveAdmin初始值设定项文件进行设置。谢谢您的回答。我想让这个没有CSS只是在配置。我将等待更多的答案。感谢您发布您的答案!请注意,您应该将答案的重要部分发布在此网站上,否则您的帖子可能会被删除。如果您愿意,您可以继续添加该链接,但仅作为“参考”。答案应该是独立的,不需要链接。@bluefeet我按照你说的解决了这个问题。谢谢;)嗨@monteirobrena谢谢你的详细解释。你看到一个简单的方法来添加一个注销按钮和用户登录到标题的右边吗?谢谢你advance@Tiago我认为右边的“注销”按钮是Active Admin的默认值,关于“登录”按钮,我不确定,因为默认情况下,菜单栏只显示给已经登录的用户。@monteirobrena obrigado:)无论如何,以这种方式构建菜单会删除“注销”按钮和用户名。我不知道如何在那里添加它们。@Rider在您的示例中只有第二级,在本例中是第三级。无论如何,谢谢你。