class ActiveAdmin::MenuCollection
A MenuCollection
stores multiple menus for any given namespace. Namespaces delegate the addition of menu items to this class.
Constants
- NoMenuError
Public Class Methods
new()
click to toggle source
# File lib/active_admin/menu_collection.rb, line 11 def initialize @menus = {} @build_callbacks = [] @built = false end
Public Instance Methods
add(menu_name, menu_item_options = {})
click to toggle source
Add a new menu item to a menu in the collection
# File lib/active_admin/menu_collection.rb, line 18 def add(menu_name, menu_item_options = {}) menu = find_or_create(menu_name) menu.add menu_item_options end
before_build(&block)
click to toggle source
Add callbacks that will be run before the menu is built
# File lib/active_admin/menu_collection.rb, line 50 def before_build(&block) @build_callbacks.unshift(block) end
clear!()
click to toggle source
# File lib/active_admin/menu_collection.rb, line 24 def clear! @menus = {} @built = false end
exists?(menu_name)
click to toggle source
# File lib/active_admin/menu_collection.rb, line 29 def exists?(menu_name) @menus.keys.include? menu_name end
fetch(menu_name)
click to toggle source
# File lib/active_admin/menu_collection.rb, line 33 def fetch(menu_name) build_menus! @menus[menu_name] or raise NoMenuError, "No menu by the name of #{menu_name.inspect} in availble menus: #{@menus.keys.join(", ")}" end
on_build(&block)
click to toggle source
Add callbacks that will be run when the menu is going to be built. This helps use with reloading and allows configurations to add items to menus.
@param [Proc] block A block which will be ran when the menu is built. The
will have the menu collection yielded.
# File lib/active_admin/menu_collection.rb, line 45 def on_build(&block) @build_callbacks << block end
Private Instance Methods
built?()
click to toggle source
# File lib/active_admin/menu_collection.rb, line 64 def built? @built end
find_or_create(menu_name)
click to toggle source
# File lib/active_admin/menu_collection.rb, line 87 def find_or_create(menu_name) menu_name ||= DEFAULT_MENU @menus[menu_name] ||= ActiveAdmin::Menu.new end
run_on_build_callbacks()
click to toggle source
# File lib/active_admin/menu_collection.rb, line 77 def run_on_build_callbacks @build_callbacks.each do |callback| callback.call(self) end end