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.
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.
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.