It seems to me that Rails loves CRUD. CRUD stands for create read update and delete, a set of actions you can perform in an application that maps to the database operations. Things get very simple when you stick to conventions that Rails enforces upon you.
Even though the routing system doesn’t force you to use standard names (you can map any action to any controller#method), it offers REST support using the
resources method that gives you named routes pointing to CRUD-based actions.
To enable support for a resource named
post, add the following line to the
This creates four named routes mapping to seven controller actions.
|HTTP Verb||Path||Controller#Action||Used For|
|GET||/posts||posts#index||display a list of all posts|
|GET||/posts/new||posts#new||displaly an HTML form for creating a new post|
|POST||/posts||posts#create||create a new post|
|GET||/posts/:id||posts#show||display a post with the given id|
|GET||/posts/:id/edit||posts#edit||HTML form for editing the post|
|PATCH/PUT||/posts/:id||posts#update||update a specific post|
|DELETE||/posts/:id||posts#destroy||delete a specific post|
You can also create multiple resources in the same line.
resources :photos, :books, :videos
Nested routes allow you to refer to a
comment in the context of a
resources :posts do resources :comments end
However, Jamis Buck recommends that you should not nest resources more than one level deep. The routes become confusing, and it’s easy to make mistakes.