4

Active Adminを使用していて、ドロップダウンメニューで別のレベルを追加しようとしています。ドキュメントでは、次のコードを使用して1つのレベルを設定できることがわかります。

  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を少し調整する必要があると思います。各ActiveAdmin.registerページに「menufalse を追加する必要があります。

于 2019-03-16T05:57:22.307 に答える