Rails routes differenza tra risorsa e risorse

Rails fornisce RESTful routing per le risorse.Rails può definire sia una singola risorsa che risorse plurali per generare routes dell’applicazione.

C’è una differenza logica che dovrebbe essere considerata quando si seleziona resource o resources quando si generano routers.

Uso delle risorse in Rails routes

Vediamo le routes generate quando usiamo resources in Rails routes.

resources :products
HTTP Verb Path Controller#Action Usato per
GET /prodotti prodotti#indice visualizza un elenco di tutti i prodotti
GET /prodotti/nuovo prodotti#nuovo restituisce un modulo HTML per creare un nuovo prodotto
POST /prodotti prodotti#crea crea un nuovo prodotto
GET /prodotti/:id prodotti#show visualizza un prodotto specifico
GET /products/:id/edit prodotti#edit restituisce un modulo HTML per modificare un prodotto
PATCH/PUT /products/:id prodotti#aggiornamento aggiornamento di un prodotto specifico
CANCELLA prodotti/:id prodotti#destroy elimina un prodotto specifico

Uso della risorsa nelle rotte Rails

Prendiamo un esempio di utente profile per un utente loggato sul sito web usando l’applicazione Rails.Si suppone che il profilo dell’utente sia un’entità (risorsa) su cui lavorare quando l’utente è loggato. Non vogliamo che l’utente finale conosca il profilo ID dell’utente.Quindi,

  • Per visualizzare il profilo, la rotta dovrebbe essere qualcosa come www.example.com/profile
  • Per modificare il profilo, la rotta dovrebbe essere qualcosa come www.example.com/profile/edit

ecc.

Possiamo definire le rotte per la risorsa profilecome indicato sotto.

resource :profile
HTTP Verb Path Controller#Action Usato per
GET /profile/new profiles#new return an HTML per creare un nuovo profilo
POST /profile profiles#create crea un nuovo profilo
GET /profile profiles#show visualizza un profilo specifico
GET /profile/edit profiles#edit restituisce un modulo HTML per modificare un profilo
PATCH/PUT /profile profiles#update aggiorna un profilo specifico
DELETE /profilo profili#distruggi cancella un profilo specifico

Si può vedere che i percorsi delle risorse singolari non hanno ID della risorsa.Inoltre, indirizza ancora le richieste al nome del controller pluralizzato.

Le guide di Rails suggeriscono:,

A volte, avete una risorsa che i clienti cercano sempre senza fare riferimento a un ID. Per esempio, vorreste che /profile mostrasse sempre il profilo dell’utente attualmente loggato. In questo caso, puoi usare una risorsa singolare.

Differenza tra risorsa e risorse