Rails rutter skillnad mellan resurs och resurser

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.

resources :products
.

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.

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

Skillnaden mellan resurs och resurser