There are seven common actions that Rails expects to be executed on a type of web resource:
index: list the resources of the type
- make a new resource, that is:
new: seek input from the user about the new resource
create: add the new resource using that input
- work with a specific resource, in one of a few ways:
show: show it
destroy: delete it
- change it, that is:
edit: seek input from the user about the change
update: update the resource using that input
These seven actions correspond to different routes that Rails’ resources controller helper function will set up. In learning these, I found it helpful to look at the relationships involved from a few different angles. Personally, things made the most sense when organized around the different HTTP verbs being used.
HTTP Verbs
| HTTP Verb |
Action |
Path |
| GET |
index |
/photos |
| |
show |
/photos/:id |
| |
new |
/photos/new |
| |
edit |
/photos/:id/edit |
| POST |
create |
/photos |
| PATCH/PUT |
update |
/photos/:id |
| DELETE |
destroy |
/photos/:id |
Routes
| Path |
HTTP Verb |
Action |
| /photos |
GET |
index |
| |
POST |
create |
| /photos/new |
GET |
new |
| /photos/:id |
GET |
show |
| |
PATCH/PUT |
update |
| |
DELETE |
destroy |
| /photos/:id/edit |
GET |
edit |
Actions
| Action |
Path |
HTTP Verb |
index |
/photos |
GET |
new |
/photos/new |
GET |
create |
/photos |
POST |
show |
/photos/:id |
GET |
destroy |
/photos/:id |
DELETE |
edit |
/photos/:id/edit |
GET |
update |
/photos/:id |
PATCH/PUT |
CRUD
Another angle on this is to consider the four CRUD actions - Create, Read, Update, and Destroy:
| Action |
Path |
HTTP Verb |
| Create |
|
|
new |
/photos/new |
GET |
create |
/photos |
POST |
| Read |
|
|
index |
/photos |
GET |
show |
/photos/:id |
GET |
| Update |
|
|
edit |
/photos/:id/edit |
GET |
update |
/photos/:id |
PATCH/PUT |
| Destroy |
|
|
destroy |
/photos/:id |
DELETE |