class ActiveAdmin::Router
@private
Attributes
namespaces[R]
router[R]
Public Class Methods
new(router:, namespaces:)
click to toggle source
# File lib/active_admin/router.rb, line 6 def initialize(router:, namespaces:) @router, @namespaces = router, namespaces end
Public Instance Methods
apply()
click to toggle source
# File lib/active_admin/router.rb, line 10 def apply define_root_routes define_resources_routes end
Private Instance Methods
build_action(action)
click to toggle source
Deals with ControllerAction
instances Builds one route for each HTTP verb passed in
# File lib/active_admin/router.rb, line 88 def build_action(action) build_route(action.http_verb, action.name) end
build_route(verbs, *args)
click to toggle source
# File lib/active_admin/router.rb, line 92 def build_route(verbs, *args) Array.wrap(verbs).each { |verb| router.send(verb, *args) } end
define_actions(config)
click to toggle source
Defines member and collection actions
# File lib/active_admin/router.rb, line 75 def define_actions(config) router.member do config.member_actions.each { |action| build_action(action) } end router.collection do config.collection_actions.each { |action| build_action(action) } router.post :batch_action if config.batch_actions_enabled? end end
define_belongs_to_routes(config)
click to toggle source
# File lib/active_admin/router.rb, line 96 def define_belongs_to_routes(config) # If it's optional, make the normal resource routes page_or_resource_routes(config) if config.belongs_to_config.optional? # Make the nested belongs_to routes # :only is set to nothing so that we don't clobber any existing routes on the resource router.resources config.belongs_to_config.target.resource_name.plural, only: [] do page_or_resource_routes(config) end end
define_namespace(config)
click to toggle source
# File lib/active_admin/router.rb, line 107 def define_namespace(config) router.namespace config.namespace.name, config.namespace.route_options.dup do define_routes(config) end end
define_resource_routes(config)
click to toggle source
# File lib/active_admin/router.rb, line 37 def define_resource_routes(config) if config.namespace.root? define_routes(config) else # Add on the namespace if required define_namespace(config) end end
define_resources_routes()
click to toggle source
Defines the routes for each resource
# File lib/active_admin/router.rb, line 30 def define_resources_routes resources = namespaces.flat_map{ |n| n.resources.values } resources.each do |config| define_resource_routes(config) end end
define_root_routes()
click to toggle source
# File lib/active_admin/router.rb, line 17 def define_root_routes namespaces.each do |namespace| if namespace.root? router.root namespace.root_to_options.merge(to: namespace.root_to) else router.namespace namespace.name, namespace.route_options.dup do router.root namespace.root_to_options.merge(to: namespace.root_to, as: :root) end end end end
define_routes(config)
click to toggle source
# File lib/active_admin/router.rb, line 46 def define_routes(config) if config.belongs_to? define_belongs_to_routes(config) else page_or_resource_routes(config) end end
page_or_resource_routes(config)
click to toggle source
# File lib/active_admin/router.rb, line 54 def page_or_resource_routes(config) config.is_a?(Page) ? page_routes(config) : resource_routes(config) end
page_routes(config)
click to toggle source
# File lib/active_admin/router.rb, line 64 def page_routes(config) page = config.underscored_resource_name router.get "/#{page}" => "#{page}#index" config.page_actions.each do |action| Array.wrap(action.http_verb).each do |verb| build_route(verb, "/#{page}/#{action.name}" => "#{page}##{action.name}") end end end
resource_routes(config)
click to toggle source
# File lib/active_admin/router.rb, line 58 def resource_routes(config) router.resources config.resource_name.route_key, only: config.defined_actions do define_actions(config) end end