Class: ActionController::Routing::RouteSet::Mapper

Inherits:
Object
  • Object
show all
Includes:
ActionController::Resources
Defined in:
lib/action_controller/routing.rb,
lib/action_controller/resources.rb

Overview

Mapper instances are used to build routes. The object passed to the draw block in config/routes.rb is a Mapper instance.

Mapper instances have relatively few instance methods, in order to avoid clashes with named routes.

Instance Method Summary collapse

Methods included from ActionController::Resources

#resource, #resources

Constructor Details

#initialize(set) ⇒ Mapper

:doc:



1058
1059
1060
# File 'lib/action_controller/routing.rb', line 1058

def initialize(set) #:nodoc:
  @set = set
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(route_name, *args, &proc) ⇒ Object

:nodoc:



1096
1097
1098
1099
# File 'lib/action_controller/routing.rb', line 1096

def method_missing(route_name, *args, &proc) #:nodoc:
  super unless args.length >= 1 && proc.nil?
  @set.add_named_route(route_name, *args)
end

Instance Method Details

#connect(path, options = {}) ⇒ Object

Create an unnamed route with the provided path and options. See ActionController::Routing for an introduction to routes.



1064
1065
1066
# File 'lib/action_controller/routing.rb', line 1064

def connect(path, options = {})
  @set.add_route(path, options)
end

#named_route(name, path, options = {}) ⇒ Object

:nodoc:



1073
1074
1075
# File 'lib/action_controller/routing.rb', line 1073

def named_route(name, path, options = {}) #:nodoc:
  @set.add_named_route(name, path, options)
end

#namespace(name, options = {}, &block) ⇒ Object

Enables the use of resources in a module by setting the name_prefix, path_prefix, and namespace for the model. Example:

map.namespace(:admin) do |admin|
  admin.resources :products,
    :has_many => [ :tags, :images, :variants ]
end

This will create admin_products_url pointing to “admin/products”, which will look for an Admin::ProductsController. It’ll also create admin_product_tags_url pointing to “admin/products/#product_id/tags”, which will look for Admin::TagsController.



1088
1089
1090
1091
1092
1093
1094
# File 'lib/action_controller/routing.rb', line 1088

def namespace(name, options = {}, &block)
  if options[:namespace]
    with_options({:path_prefix => "#{options.delete(:path_prefix)}/#{name}", :name_prefix => "#{options.delete(:name_prefix)}#{name}_", :namespace => "#{options.delete(:namespace)}#{name}/" }.merge(options), &block)
  else
    with_options({:path_prefix => name, :name_prefix => "#{name}_", :namespace => "#{name}/" }.merge(options), &block)
  end
end

#root(options = {}) ⇒ Object

Creates a named route called “root” for matching the root level request.



1069
1070
1071
# File 'lib/action_controller/routing.rb', line 1069

def root(options = {})
  named_route("root", '', options)
end