match(path, options=nil) public

Matches a url pattern to one or more routes. Any symbols in a pattern are interpreted as url query parameters and thus available as params in an action:

# sets :controller, :action and :id in params
match ':controller/:action/:id'

Two of these symbols are special, :controller maps to the controller and :action to the controller’s action. A pattern can also map wildcard segments (globs) to params:

match 'songs/*category/:title' => 'songs#show'

# 'songs/rock/classic/stairway-to-heaven' sets
#  params[:category] = 'rock/classic'
#  params[:title] = 'stairway-to-heaven'

When a pattern points to an internal route, the route’s :action and :controller should be set in options or hash shorthand. Examples:

match 'photos/:id' => 'photos#show'
match 'photos/:id', :to => 'photos#show'
match 'photos/:id', :controller => 'photos', :action => 'show'

A pattern can also point to a Rack endpoint i.e. anything that responds to call:

match 'photos/:id' => lambda {|hash| [200, {}, "Coming soon"] }
match 'photos/:id' => PhotoRackApp
# Yes, controller actions are just rack endpoints
match 'photos/:id' => PhotosController.action(:show)


Any options not seen here are passed on as params with the url.


The route’s controller.


The route’s action.


The path prefix for the routes.


The namespace for :controller.

match 'path' => 'c#a', :module => 'sekret', :controller => 'posts'
#=> Sekret::PostsController

See Scoping#namespace for its scope equivalent.


The name used to generate routing helpers.


Allowed HTTP verb(s) for route.

match 'path' => 'c#a', :via => :get
match 'path' => 'c#a', :via => [:get, :post]

Points to a Rack endpoint. Can be an object that responds to call or a string representing a controller’s action.

match 'path', :to => 'controller#action'
match 'path', :to => lambda { [200, {}, "Success!"] }
match 'path', :to => RackApp

Shorthand for wrapping routes in a specific RESTful context. Valid values are :member, :collection, and :new. Only use within resource(s) block. For example:

resource :bar do
  match 'foo' => 'c#a', :on => :member, :via => [:get, :post]

Is equivalent to:

resource :bar do
  member do
    match 'foo' => 'c#a', :via => [:get, :post]

Constrains parameters with a hash of regular expressions or an object that responds to matches?

match 'path/:id', :constraints => { :id => /[A-Z]\d{5}/ }

class Blacklist
  def matches?(request) request.remote_ip == '' end
match 'path' => 'c#a', :constraints => Blacklist.new

See Scoping#constraints for more examples with its scope equivalent.


Sets defaults for parameters

# Sets params[:format] to 'jpg' by default
match 'path' => 'c#a', :defaults => { :format => 'jpg' }

See Scoping#defaults for its scope equivalent.


Boolean to anchor a match pattern. Default is true. When set to false, the pattern matches any request prefixed with the given path.

# Matches any request starting with 'path'
match 'path' => 'c#a', :anchor => false
Show source
Register or log in to add new notes.