Rute Rails diferența dintre resursă și resurse

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.

resources :products

.

.

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.

resource :profile
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

.