class ActiveAdmin::MenuCollection
A MenuCollection
stores multiple menus for any given namespace. Namespaces delegate the addition of menu items to this class.
Public Class Methods
Source
# File lib/active_admin/menu_collection.rb, line 9 def initialize @menus = {} @build_callbacks = [] @built = false end
Public Instance Methods
Source
# File lib/active_admin/menu_collection.rb, line 16 def add(menu_name, menu_item_options = {}) menu = find_or_create(menu_name) menu.add menu_item_options end
Add a new menu item to a menu in the collection
Source
# File lib/active_admin/menu_collection.rb, line 48 def before_build(&block) @build_callbacks.unshift(block) end
Add callbacks that will be run before the menu is built
Source
# File lib/active_admin/menu_collection.rb, line 22 def clear! @menus = {} @built = false end
Source
# File lib/active_admin/menu_collection.rb, line 27 def exists?(menu_name) @menus.keys.include? menu_name end
Source
# File lib/active_admin/menu_collection.rb, line 31 def fetch(menu_name) build_menus! @menus[menu_name] or raise NoMenuError, "No menu by the name of #{menu_name.inspect} in available menus: #{@menus.keys.join(", ")}" end
Source
# File lib/active_admin/menu_collection.rb, line 43 def on_build(&block) @build_callbacks << block end
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.
Private Instance Methods
Source
# File lib/active_admin/menu_collection.rb, line 85 def find_or_create(menu_name) menu_name ||= DEFAULT_MENU @menus[menu_name] ||= ActiveAdmin::Menu.new end
Source
# File lib/active_admin/menu_collection.rb, line 75 def run_on_build_callbacks @build_callbacks.each do |callback| callback.call(self) end end