Class: ActiveAdmin::MenuItem

Inherits:
Object
  • Object
show all
Includes:
ActiveAdmin::Menu::MenuNode, MethodOrProcHelper
Defined in:
lib/active_admin/menu_item.rb

Instance Attribute Summary collapse

Attributes included from ActiveAdmin::Menu::MenuNode

#children

Instance Method Summary collapse

Methods included from MethodOrProcHelper

#call_method_or_exec_proc, #call_method_or_proc_on, #render_in_context, #render_or_call_method_or_proc_on

Methods included from ActiveAdmin::Menu::MenuNode

#[], #[]=, #add, #current?, #include?, #items

Constructor Details

#initialize(options = {}) {|_self| ... } ⇒ MenuItem

Builds a new menu item

NOTE: for :label, :url, and :if These options are evaluated in the view context at render time. Symbols are called as methods on ‘self`, and Procs are exec’d within ‘self`. Here are some examples of what you can do:

menu if:  :admin?
menu url: :new_book_path
menu url: :awesome_helper_you_defined
menu label: ->{ User.some_method }
menu label: ->{ I18n.t 'menus.user' }

Parameters:

  • options (Hash) (defaults to: {})

    The options for the menu

  • [ActiveAdmin::MenuItem] (Hash)

    a customizable set of options

Options Hash (options):

  • :label (String, Symbol, Proc)

    The label to display for this menu item. Default: Titleized Resource Name

  • :id (String)

    A custom id to reference this menu item with. Default: underscored_resource_name

  • :url (String, Symbol, Proc)

    The URL this item will link to.

  • :priority (Integer)

    The lower the priority, the earlier in the menu the item will be displayed. Default: 10

  • :if (Symbol, Proc)

    This decides whether the menu item will be displayed. Evaluated on each request.

  • :html_options (Hash)

    A hash of options to pass to ‘link_to` when rendering the item

Yields:

  • (_self)

Yield Parameters:



50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/active_admin/menu_item.rb', line 50

def initialize(options = {})
  super() # MenuNode
  @label = options[:label]
  @dirty_id = options[:id] || options[:label]
  @url = options[:url] || "#"
  @priority = options[:priority] || 10
  @html_options = options[:html_options] || {}
  @should_display = options[:if] || proc { true }
  @parent = options[:parent]

  yield(self) if block_given? # Builder style syntax
end

Instance Attribute Details

#html_optionsObject (readonly)

Returns the value of attribute html_options.



9
10
11
# File 'lib/active_admin/menu_item.rb', line 9

def html_options
  @html_options
end

#parentObject (readonly)

Returns the value of attribute parent.



9
10
11
# File 'lib/active_admin/menu_item.rb', line 9

def parent
  @parent
end

#priorityObject (readonly)

Returns the value of attribute priority.



9
10
11
# File 'lib/active_admin/menu_item.rb', line 9

def priority
  @priority
end

Instance Method Details

#display?(context = nil) ⇒ Boolean

Don’t display if the :if option passed says so Don’t display if the link isn’t real, we have children, and none of the children are being displayed.

Returns:

  • (Boolean)


77
78
79
80
81
# File 'lib/active_admin/menu_item.rb', line 77

def display?(context = nil)
  return false unless render_in_context(context, @should_display)
  return false if !real_url?(context) && @children.any? && !items(context).any?
  true
end

#idObject



63
64
65
# File 'lib/active_admin/menu_item.rb', line 63

def id
  @id ||= normalize_id @dirty_id
end

#label(context = nil) ⇒ Object



67
68
69
# File 'lib/active_admin/menu_item.rb', line 67

def label(context = nil)
  render_in_context(context, @label)
end

#url(context = nil) ⇒ Object



71
72
73
# File 'lib/active_admin/menu_item.rb', line 71

def url(context = nil)
  render_in_context(context, @url)
end