Rails tillhandahåller RESTful routing för resurser.Rutter kan antingen definiera en enskild resurs eller flera resurser för att generera rutter för applikationen.
Det finns en logisk skillnad som bör övervägas när man väljer resource
eller resources
när man genererar routrar.
Användning av resurser i Rails rutter
Vi ska se vilka rutter som genereras när vi använder resources
i Rails rutter.
HTTP Verb | Path | Controller#Action | Används för | |
---|---|---|---|---|
GET | /produkter | produkter#index | visar en lista över alla produkter | |
GET | /produkter/ny | produkter#ny | återger ett HTML-formulär för att skapa en ny produkt | |
POST | /produkter | produkter#skapa | skapa en ny produkt | |
GET | /produkter/:id | products#show | visar en specifik produkt | |
GET | /products/:id/edit | products#edit | returnerar ett HTML-formulär för redigering av en produkt | |
PATCH/PUT | /products/:id | produkter#uppdatera | uppdatera en specifik produkt | |
DELETE | /produkter/:id | products#destroy | delete a specific product |
Användning av resurs i Rails-rutter
Låt oss ta ett exempel på användare profile
för en användare som är inloggad på webbplatsen med hjälp av Rails-applikationen.Användarprofilen är tänkt att vara en enhet (resurs) som ska bearbetas när användaren är inloggad.Vi vill inte att slutanvändaren ska känna till användarens profil ID
.Således,
- För att visa profilen bör rutten vara något i stil med
www.example.com/profile
- För att redigera profilen bör rutten vara något i stil med
www.example.com/profile/edit
och så vidare.
Vi kan definiera rutter för profile
resursen enligt nedan.
HTTP Verb | Path | Controller#Action | Används för |
---|---|---|---|
GET | /profile/new | profiles#new | return an HTML. formulär för att skapa en ny profil |
POST | /profile | profiles#create | skapa en ny profil |
GET | /profile | profiles#show | visar ett specifik profil |
GET | /profil/redigera | profiler#redigera | returnerar ett HTML-formulär för redigering av en profil |
PATCH/PUT | /profil | profiler#uppdatera | uppdatera en specifik profil |
DELETE | /profile | profiles#destroy | delete a specific profile |
Vi kan se att singulära resurssökningsvägar inte har ID
av resursen.Dessutom dirigeras förfrågningar fortfarande till pluraliserat kontrollernamn.
Rails guider föreslår:,
Ibland har du en resurs som klienterna alltid letar upp utan att hänvisa till ett ID. Du vill till exempel att /profile alltid ska visa profilen för den för närvarande inloggade användaren. I det här fallet kan du använda en singulär resurs.