Rails oferă rutare RESTful pentru resurse.Rutele pot defini fie o singură resursă, fie mai multe resurse pentru a genera rute ale aplicației.
Există o diferență logică care ar trebui luată în considerare atunci când se selectează resource
sau resources
la generarea de rute.
Utilizarea resurselor în rutele Rails
Să vedem rutele generate atunci când folosim resources
în rutele Rails.
HTTP Verb | Path | Controller#Action | Utilizat pentru | |
---|---|---|---|---|
GET | /products | products#index | afișează o listă cu toate produsele | |
GET | GET | /products/new | products#new | returnează un formular HTML pentru crearea unui nou produs |
POST | POST | POST | products#create | crea un produs nou |
GET | /products/:id | products#show | afișează un anumit produs | |
GET | /products/:id/edit | products#edit | returnează un formular HTML pentru editarea unui produs | |
PATCH/PUT | /products/:id | products#update | actualizează un anumit produs | |
DELETE | /products/:id | products#destroy | delete a specific product |
Utilizarea resurselor în rutele Rails
Să luăm un exemplu de utilizator profile
pentru un utilizator logat pe site-ul web folosind aplicația Rails.Profilul utilizatorului ar trebui să fie o entitate (resursă) la care să se lucreze atunci când utilizatorul este conectat.Nu am dori ca utilizatorul final să cunoască profilul ID
utilizatorului.Astfel,
- Pentru a vizualiza profilul, traseul ar trebui să fie ceva de genul
www.example.com/profile
- Pentru a edita profilul, traseul ar trebui să fie ceva de genul
www.example.com/profile/edit
etc.
Potem defini traseele pentru resursa profile
așa cum se arată mai jos.
HTTP Verb | Path | Controller#Action | Utilizat pentru | |
---|---|---|---|---|
GET | /profile/new | profiles#new | return an HTML formular pentru crearea unui nou profil | |
POST | POST | profil | profile#create | crea un nou profil |
GET | /profile | profile#show | afișează un profil specific | |
GET | /profile/edit | profile#edit | reîntoarce un formular HTML pentru editarea unui profil | |
PATCH/PUT | /profile | profile#update | update a specific profile | |
DELETE | /profile | profiles#destroy | delete a specific profile |
Vezi că rutele de resurse singulare nu au ID
ale resursei.Mai mult, încă direcționează cererile către numele de controler pluralizat.
Ghidurile Rails sugerează:,
Câteodată, aveți o resursă pe care clienții o caută întotdeauna fără a face referire la un ID. De exemplu, ați dori ca /profile să afișeze întotdeauna profilul utilizatorului conectat în mod curent. În acest caz, puteți utiliza o resursă singulară.
Diferența dintre resursă și resurse
.