4

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

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

谢谢你的帮助。

编辑:

我想要这样的东西:

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

3 回答 3

5

我解决了这个问题,覆盖了 ActiveAdmin 的菜单。还需要为新菜单创建一个新的 CSS。

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

config.view_factory.header = CustomAdminHeader
config.register_stylesheet 'new_menu.css'

创建一个名为 CustomAdminHeader 的类,该类将包含将覆盖构造菜单的代码。您可以在app/admin中创建此类并将文件命名为custom_admin_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

您的菜单结构将由此类创建,因此不应显示文件夹app/admin中包含的类中使用的菜单设置。为此,您需要在所有类中添加以下代码:

menu false

最后,您需要创建一个名为new_menu.css的 CSS 文件并为新菜单添加 CSS。

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

http://monteirobrena.wordpress.com/2013/05/07/activeadmin-customizacao-do-menu/

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

于 2013-05-07T20:13:10.767 回答
4

如果您将多个资源放在菜单中的同一个父项下,那么您的下拉菜单将为这些资源中的每一个提供一个级别。对于下面的示例,博客选项卡将下拉一个菜单,其中包含帖子和评论。要向“博客”下拉菜单添加更多资源,您所要做的就是让他们的menu :parent => "Blog"

发布资源

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

评论资源

ActiveAdmin.register Comment do
  menu :parent => "Blog"
end
于 2013-03-15T01:25:21.360 回答
1

您可以通过一点 css 帮助在 ActiveAdmin.setup 配置文件中完成此操作。

首先在 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。您都需要将“menu false”添加到每个 ActiveAdmin.register 页面。

于 2019-03-16T05:57:22.307 回答