Module ActionDispatch::Routing::Mapper::Resources
In: lib/action_dispatch/routing/mapper.rb

Resource routing allows you to quickly declare all of the common routes for a given resourceful controller. Instead of declaring separate routes for your index, show, new, edit, create, update and destroy actions, a resourceful route declares them in a single line of code:

 resources :photos

Sometimes, you have a resource that clients always look up without referencing an ID. A common example, /profile always shows the profile of the currently logged in user. In this case, you can use a singular resource to map /profile (rather than /profile/:id) to the show action.

 resource :profile

It‘s common to have resources that are logically children of other resources:

  resources :magazines do
    resources :ads
  end

You may wish to organize groups of controllers under a namespace. Most commonly, you might group a number of administrative controllers under an admin namespace. You would place these controllers under the app/controllers/admin directory, and you can group them together in your router:

  namespace "admin" do
    resources :posts, :comments
  end

Methods

Constants

VALID_ON_OPTIONS = [:new, :collection, :member]   CANONICAL_ACTIONS holds all actions that does not need a prefix or a path appended since they fit properly in their scope level.
RESOURCE_OPTIONS = [:as, :controller, :path, :only, :except]
CANONICAL_ACTIONS = %w(index create new show update destroy)

Public Instance methods

To add a route to the collection:

  resources :photos do
    collection do
      get 'search'
    end
  end

This will enable Rails to recognize paths such as /photos/search with GET, and route to the search action of PhotosController. It will also create the search_photos_url and search_photos_path route helpers.

To add a member route, add a member block into the resource block:

  resources :photos do
    member do
      get 'preview'
    end
  end

This will recognize /photos/1/preview with GET, and route to the preview action of PhotosController. It will also create the preview_photo_url and preview_photo_path helpers.

Sometimes, you have a resource that clients always look up without referencing an ID. A common example, /profile always shows the profile of the currently logged in user. In this case, you can use a singular resource to map /profile (rather than /profile/:id) to the show action:

  resource :geocoder

creates six different routes in your application, all mapping to the GeoCoders controller (note that the controller is named after the plural):

  GET     /geocoder/new
  POST    /geocoder
  GET     /geocoder
  GET     /geocoder/edit
  PUT     /geocoder
  DELETE  /geocoder

In Rails, a resourceful route provides a mapping between HTTP verbs and URLs and controller actions. By convention, each action also maps to particular CRUD operations in a database. A single entry in the routing file, such as

  resources :photos

creates seven different routes in your application, all mapping to the Photos controller:

  GET     /photos/new
  POST    /photos
  GET     /photos/:id
  GET     /photos/:id/edit
  PUT     /photos/:id
  DELETE  /photos/:id

Supported options

:path_names
Allows you to change the paths of the seven default actions. Paths not specified are not changed.
  resources :posts, :path_names => { :new => "brand_new" }

The above example will now change /posts/new to /posts/brand_new

Protected Instance methods

[Validate]