resources
resources(*resources, &block)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
Resources can also be nested infinitely by using this block syntax:
resources :photos do resources :comments end
This generates the following comments routes:
GET /photos/:id/comments/new POST /photos/:id/comments GET /photos/:id/comments/:id GET /photos/:id/comments/:id/edit PUT /photos/:id/comments/:id DELETE /photos/:id/comments/: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
- :module
-
Set the module where the controller can be found. Defaults to nothing.
resources :posts, :module => "admin"
All requests to the posts resources will now go to +Admin::PostsController+.
- :path
-
Set a path prefix for this resource.
resources :posts, :path => "admin"
All actions for this resource will now be at /admin/posts.
1Note
The :path option
The path option will actually set the path and not the prefix I have found in Rails 3.0.5.
==== Example
resources :my_reports, :path => 'my-reports'
All actions for this resource will now be at /my-reports.