resources
- 1.0.0
- 1.1.6
- 1.2.6
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.8
- 3.0.0
- 3.0.9
- 3.1.0
- 3.2.1
- 3.2.8
- 3.2.13
- 4.0.2
- 4.1.8
- 4.2.1
- 4.2.7
- 4.2.9
- 5.0.0.1
- 5.1.7
- 5.2.3
- 6.0.0
- 6.1.3.1 (0)
- 6.1.7.7 (0)
- 7.0.0 (0)
- 7.1.3.2 (0)
- 7.1.3.4 (0)
- 7.2.3 (2)
- 8.0.0 (0)
- 8.1.1
- What's this?
resources(*resources, &block)
public
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 GET /photos/new POST /photos GET /photos/:id GET /photos/:id/edit PATCH/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/:photo_id/comments GET /photos/:photo_id/comments/new POST /photos/:photo_id/comments GET /photos/:photo_id/comments/:id GET /photos/:photo_id/comments/:id/edit PATCH/PUT /photos/:photo_id/comments/:id DELETE /photos/:photo_id/comments/:id
### Options Takes same options as [match](rdoc-ref:Base#match) as well as:
:path_names : Allows you to change the segment component of the `edit` and `new`
actions. Actions not specified are not changed. resources :posts, path_names: { new: "brand_new" } The above example will now change /posts/new to /posts/brand_new.
:path : Allows you to change the path prefix for the resource.
resources :posts, path: 'postings' The resource and all segments will now route to /postings instead of /posts.
:only : Only generate routes for the given actions.
resources :cows, only: :show resources :cows, only: [:show, :index]
:except : Generate all routes except for the given actions.
resources :cows, except: :show resources :cows, except: [:show, :index]
:shallow : Generates shallow routes for nested resource(s). When placed on a parent
resource, generates shallow routes for all nested resources. resources :posts, shallow: true do resources :comments end Is the same as: resources :posts do resources :comments, except: [:show, :edit, :update, :destroy] end resources :comments, only: [:show, :edit, :update, :destroy] This allows URLs for resources that otherwise would be deeply nested such as a comment on a blog post like `/posts/a-long-permalink/comments/1234` to be shortened to just `/comments/1234`. Set `shallow: false` on a child resource to ignore a parent's shallow parameter.
:shallow_path : Prefixes nested shallow routes with the specified path.
scope shallow_path: "sekret" do resources :posts do resources :comments, shallow: true end end The `comments` resource here will have the following routes generated for it: post_comments GET /posts/:post_id/comments(.:format) post_comments POST /posts/:post_id/comments(.:format) new_post_comment GET /posts/:post_id/comments/new(.:format) edit_comment GET /sekret/comments/:id/edit(.:format) comment GET /sekret/comments/:id(.:format) comment PATCH/PUT /sekret/comments/:id(.:format) comment DELETE /sekret/comments/:id(.:format)
:shallow_prefix : Prefixes nested shallow route names with specified prefix.
scope shallow_prefix: "sekret" do resources :posts do resources :comments, shallow: true end end The `comments` resource here will have the following routes generated for it: post_comments GET /posts/:post_id/comments(.:format) post_comments POST /posts/:post_id/comments(.:format) new_post_comment GET /posts/:post_id/comments/new(.:format) edit_sekret_comment GET /comments/:id/edit(.:format) sekret_comment GET /comments/:id(.:format) sekret_comment PATCH/PUT /comments/:id(.:format) sekret_comment DELETE /comments/:id(.:format)
:format : Allows you to specify the default value for optional `format` segment or
disable it by supplying `false`.
:param : Allows you to override the default param name of `:id` in the URL.
### Examples
# routes call +Admin::PostsController+ resources :posts, module: "admin" # resource actions are at /admin/posts. resources :posts, path: "admin/posts"

