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.
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 profile
come indicato sotto.
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.