Rails provides RESTful routing for resources.Routes can either define single resource or plural resources to generate routesof the application.
There is a logical difference that should be consideredwhen selecting resource
or resources
when generating routers.
Use of resources in Rails routes
Let’s see the routes generated when we use resources
in Rails routes.
HTTP Verb | Path | Controller#Action | Used for |
---|---|---|---|
GET | /products | products#index | wyświetl listę wszystkich produktów |
GET | /products/new | products#new | zwróć formularz HTML do tworzenia nowego produktu |
POST | /products | products#create | twórz nowy produkt |
GET | /products/:id | products#show | wyświetl konkretny produkt |
GET | /products/:id/edit | products#edit | zwróć formularz HTML do edycji produktu |
PATCH/PUT | /products/:id | products#update | update a specific product |
DELETE | /products/:id | products#destroy | delete a specific product |
Użycie zasobu w Rails routes
Przyjrzyjrzyjmy się przykładowi użytkownika profile
dla użytkownika zalogowanego na stronie internetowej przy użyciu aplikacji Rails.Profil użytkownika ma być bytem (zasobem), nad którym należy pracować, gdy użytkownik jest zalogowany.Nie chcielibyśmy, aby użytkownik końcowy znał profil ID
użytkownika.Tak więc,
- Aby wyświetlić profil, trasa powinna być czymś w rodzaju
www.example.com/profile
- Aby edytować profil, trasa powinna być czymś w rodzaju
www.example.com/profile/edit
etc.
Możemy zdefiniować trasy dla zasobu profile
jak podano poniżej.
HTTP Verb | Path | Controller#Action | Used for | |
---|---|---|---|---|
GET | /profile/new | profiles#new | return an HTML formularz do tworzenia nowego profilu | |
POST | /profile | profiles#create | twórz nowy profil | |
GET | profile | profile#show | pokaż | pokaż konkretny profil konkretny profil |
GET | /profile/edit | profiles#edit | zwróć formularz HTML do edycji profilu | |
PATCH/PUT | /profile | profiles#update | update a specific profile | |
DELETE | /profile | profiles#destroy | delete a specific profile |
Widzimy, że pojedyncze trasy zasobów nie mają ID
zasobu.Co więcej, nadal kieruje żądania do spolszczonej nazwy kontrolera.
Przewodniki po Railsach sugerują:,
Czasami masz zasób, którego klienci zawsze szukają bez odwoływania się do ID. Na przykład, chciałbyś aby /profile zawsze pokazywał profil aktualnie zalogowanego użytkownika. W tym przypadku można użyć pojedynczego zasobu.
Różnica między zasobem a zasobami
.