Rails routes verschil tussen resource en resources

Rails voorziet in RESTful routing voor resources.Routes kunnen zowel enkele resource of meervoudige resources definiëren om routes van de applicatie te genereren.

Er is een logisch verschil dat in overweging moet worden genomen bij het selecteren van resource of resources bij het genereren van routers.

Gebruik van resources in Rails routes

Laten we eens kijken naar de routes die worden gegenereerd wanneer we resources in Rails routes gebruiken.

resources :products
HTTP Verb Path Controller#Action Gebruikt voor
GET /products products#index toont een lijst van alle producten
GET /products/new products#new terugkeer een HTML-formulier voor het maken van een nieuw product
POST /products products#create maakt een nieuw product
GET /products/:id products#show tonen van een specifiek product
GET /products/:id/edit products#edit retourneert een HTML-formulier voor het bewerken van een product
PATCH/PUT /products/:id products#update bijwerken van een specifiek product
DELETE /products/:id products#destroy delete a specific product

Gebruik van resource in Rails routes

Laten we een voorbeeld nemen van gebruiker profile voor een gebruiker die is ingelogd op website met behulp van Rails applicatie.Gebruikersprofiel wordt verondersteld een entiteit (resource) te zijn om aan te werken wanneer de gebruiker is ingelogd.We zouden niet willen dat de eindgebruiker het profiel ID van de gebruiker kent.Dus,

  • Om het profiel te bekijken, moet de route iets zijn als www.example.com/profile
  • Om het profiel te bewerken, moet de route iets zijn als www.example.com/profile/edit

etc.

We kunnen routes definiëren voor profile resource zoals hieronder gegeven.

resource :profile
HTTP-werkwoord Path Controller#Action Gebruikt voor
GET /profile/new profiles#new return een HTML formulier voor het aanmaken van een nieuw profiel
POST /profile profiles#create create a new profile
GET /profile profiles#show display a specifiek profiel
GET /profile/edit profiles#edit retourneer een HTML-formulier voor het bewerken van een profiel
PATCH/PUT /profile profiles#update update a specific profile
DELETE /profile profiles#destroy delete a specific profile

We kunnen zien dat enkelvoudige resource routes geen ID van de resource hebben.Bovendien leidt het nog steeds verzoeken naar de meervoudige controllernaam.

Rails gidsen suggereren:,

Soms, heb je een bron die clients altijd opzoeken zonder te verwijzen naar een ID. Bijvoorbeeld, je zou willen dat /profile altijd het profiel toont van de huidige ingelogde gebruiker. In dit geval kunt u een enkelvoudige bron gebruiken.

Verschil tussen bron en bronnen