Active Adminを使用していて、ドロップダウンメニューで別のレベルを追加しようとしています。ドキュメントでは、次のコードを使用して1つのレベルを設定できることがわかります。
ActiveAdmin.register Post do
menu :parent => "Blog"
end
助けてくれてありがとう。
編集:
私はそのようなものが欲しい:
Menu 1 ^
Menu 2 > Menu A
Menu B
Menu 3
Active Adminを使用していて、ドロップダウンメニューで別のレベルを追加しようとしています。ドキュメントでは、次のコードを使用して1つのレベルを設定できることがわかります。
ActiveAdmin.register Post do
menu :parent => "Blog"
end
助けてくれてありがとう。
編集:
私はそのようなものが欲しい:
Menu 1 ^
Menu 2 > Menu A
Menu B
Menu 3
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/
どなたにもお役に立てば幸いです。
メニューの同じ親の下に複数のリソースを配置すると、ドロップダウンにそれらの各リソースのレベルが表示されます。以下の例では、[ブログ]タブに[投稿とコメント]が含まれるメニューがドロップダウンします。「ブログ」ドロップダウンにリソースを追加するためにあなたがしなければならないのは、彼らを作ることだけですmenu :parent => "Blog"
投稿リソース
ActiveAdmin.register Post do
menu :parent => "Blog"
end
コメントリソース
ActiveAdmin.register Comment do
menu :parent => "Blog"
end
これは、少し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 」を追加する必要があります。