Rails-Routen Unterschied zwischen Ressource und Ressourcen

Rails bietet RESTful-Routing für Ressourcen.Routen können entweder eine einzelne Ressource oder mehrere Ressourcen definieren, um Routen der Anwendung zu generieren.

Es gibt einen logischen Unterschied, der bei der Auswahl von resource oder resources bei der Generierung von Routen berücksichtigt werden sollte.

Verwendung von Ressourcen in Rails-Routen

Lassen Sie uns die generierten Routen sehen, wenn wir resources in Rails-Routen verwenden.

resources :products
HTTP Verb Path Controller#Action Verwendet für
GET /Produkte Produkte#index Anzeige einer Liste aller Produkte
GET /Produkte/Neu Produkte#Neu Rückgabe eines HTML-Formulars zur Erstellung eines neuen Produkts
POST /Produkte Produkte#Erstellen Ein neues Produkt erstellen
GET /Produkte/:id products#show ein bestimmtes Produkt anzeigen
GET /products/:id/edit products#edit ein HTML-Formular zum Bearbeiten eines Produkts zurückgeben
PATCH/PUT /products/:id products#update ein bestimmtes Produkt aktualisieren
DELETE /products/:id products#destroy ein bestimmtes Produkt löschen

Verwendung von Ressourcen in Rails-Routen

Lassen Sie uns ein Beispiel für einen Benutzer profile nehmen, der auf einer Website mit einer Rails-Anwendung angemeldet ist.Wir würden nicht wollen, dass der Endbenutzer das Profil ID des Benutzers kennt.

  • Um das Profil anzusehen, sollte die Route so etwas wie www.example.com/profile
  • Um das Profil zu bearbeiten, sollte die Route so etwas wie www.example.com/profile/edit

etc.

Wir können Routen für die profile Ressource wie unten angegeben definieren.

resource :profile
HTTP Verb Pfad Controller#Action Verwendet für
GET /profile/new profile#new Rückgabe eines HTML Formular zum Erstellen eines neuen Profils
POST /profile profiles#create ein neues Profil erstellen
GET /profile profiles#show ein bestimmtes Profil
GET /profile/edit profiles#edit Rückgabe eines HTML-Formulars zum Bearbeiten eines Profils
PATCH/PUT /profile profiles#update Aktualisieren eines bestimmten Profils
DELETE /profile profile#destroy Löschen eines bestimmten Profils

Wir können sehen, dass einzelne Ressourcenrouten kein ID der Ressource haben.Außerdem leitet es immer noch Anfragen an den pluralisierten Controllernamen weiter.

Rails Guides schlägt vor:,

Manchmal hat man eine Ressource, die Clients immer nachschlagen, ohne auf eine ID zu verweisen. Sie möchten zum Beispiel, dass /profile immer das Profil des aktuell angemeldeten Benutzers anzeigt. In diesem Fall können Sie eine singuläre Ressource verwenden.

Unterschied zwischen Ressource und Ressourcen