Module: ActionDispatch::Routing::Mapper::Base

Included in:
ActionDispatch::Routing::Mapper
Defined in:
lib/action_dispatch/routing/mapper.rb

Instance Method Summary collapse

Instance Method Details

#default_url_options=(options) ⇒ Object Also known as: default_url_options


309
310
311
# File 'lib/action_dispatch/routing/mapper.rb', line 309

def default_url_options=(options)
  @set.default_url_options = options
end

#initialize(set) ⇒ Object

:nodoc:


245
246
247
# File 'lib/action_dispatch/routing/mapper.rb', line 245

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

#match(path, options = nil) ⇒ Object

When you set up a regular route, you supply a series of symbols that Rails maps to parts of an incoming HTTP request.

match ':controller/:action/:id/:user_id'

Two of these symbols are special: :controller maps to the name of a controller in your application, and :action maps to the name of an action within that controller. Anything other than :controller or :action will be available to the action as part of params.


271
272
273
274
275
# File 'lib/action_dispatch/routing/mapper.rb', line 271

def match(path, options=nil)
  mapping = Mapping.new(@set, @scope, path, options || {}).to_route
  @set.add_route(*mapping)
  self
end

#mount(app, options = nil) ⇒ Object

Mount a Rack-based application to be used within the application.

mount SomeRackApp, :at => "some_route"

Alternatively:

mount(SomeRackApp => "some_route")

All mounted applications come with routing helpers to access them. These are named after the class specified, so for the above example the helper is either some_rack_app_path or some_rack_app_url. To customize this helper's name, use the :as option:

mount(SomeRackApp => "some_route", :as => "exciting")

This will generate the exciting_path and exciting_url helpers which can be used to navigate to this mounted app.


294
295
296
297
298
299
300
301
302
303
304
305
306
307
# File 'lib/action_dispatch/routing/mapper.rb', line 294

def mount(app, options = nil)
  if options
    path = options.delete(:at)
  else
    options = app
    app, path = options.find { |k, v| k.respond_to?(:call) }
    options.delete(app) if app
  end

  raise "A rack application must be specified" unless path

  match(path, options.merge(:to => app, :anchor => false, :format => false))
  self
end

#root(options = {}) ⇒ Object

You can specify what Rails should route “/” to with the root method:

root :to => 'pages#main'

For options, see the match method's documentation, as root uses it internally.

You should put the root route at the top of config/routes.rb, because this means it will be matched first. As this is the most popular route of most Rails applications, this is beneficial.


258
259
260
# File 'lib/action_dispatch/routing/mapper.rb', line 258

def root(options = {})
  match '/', options.reverse_merge(:as => :root)
end