Rails tilbyder RESTful-routing for ressourcer.Ruter kan enten definere en enkelt ressource eller flere ressourcer til at generere ruter i applikationen.
Der er en logisk forskel, der bør overvejes, når man vælger resource
eller resources
, når man genererer routere.
Brug af ressourcer i Rails-ruter
Lad os se de ruter, der genereres, når vi bruger resources
i Rails-ruter.
HTTP Verber | Path | Controller#Action | Brugt til | |
---|---|---|---|---|
GET | /produkter | produkter#index | viser en liste over alle produkter | |
GET | /produkter/ny | produkter#ny | tilbageviser en HTML-formular til oprettelse af et nyt produkt | |
POST | /produkter | produkter#oprette | oprette et nyt produkt | |
GET | GET | /produkter/:id | products#show | viser et bestemt produkt |
GET | GET | /products/:id/edit | products#edit | tilbagemelder en HTML-formular til redigering af et produkt |
PATCH/PUT | /products/:id | produkter#opdatere | opdatere et bestemt produkt | |
DELETE | /produkter/:id | produkter#destroy | slette et bestemt produkt |
Brug af ressource i Rails-ruter
Lad os tage et eksempel på bruger profile
for en bruger, der er logget ind på et websted ved hjælp af Rails-applikation.Brugerprofilen skal være en enhed (ressource), der skal arbejdes på, når brugeren er logget ind.Vi vil ikke have, at slutbrugeren skal kende brugerens profil ID
.Således,
- For at se profil skal ruten være noget som
www.example.com/profile
- For at redigere profil skal ruten være noget som
www.example.com/profile/edit
osv.
Vi kan definere ruter for profile
ressource som angivet nedenfor.
HTTP-verbum | Path | Controller#Action | Bruges til |
---|---|---|---|
GET | /profile/new | profiles#new | returnerer en HTML formular til oprettelse af en ny profil |
POST | /profil | profiles#create | oprettelse af en ny profil |
GET | /profil | profiles#show | viser en specifik profil |
GET | /profil/redigere | profiler#redigere | returnerer en HTML-formular til redigering af en profil |
PATCH/PUT | /profiler | profiler#opdatere | opdatere en bestemt profil |
DELETE | /profil | profiler#destroy | slette en bestemt profil |
Vi kan se, at enkeltstående ressourceveje ikke har ID
af ressourcen.Desuden omdirigerer den stadig anmodninger til pluraliseret controllernavn.
Rails vejledninger foreslår:,
Sommetider har du en ressource, som klienter altid slår op uden at henvise til et ID. Du vil f.eks. gerne have /profile til altid at vise profilen for den aktuelt indloggede bruger. I dette tilfælde kan du bruge en enkeltstående ressource.