Rails routes difference between resource and resources

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.

resources :products

.

.

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.

resource :profile

.

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

.