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