Rails routes différence entre ressource et ressources

Rails fournit un routage RESTful pour les ressources.Les routes peuvent soit définir une seule ressource ou plusieurs ressources pour générer des routesde l’application.

Il y a une différence logique qui devrait être considéréelorsque l’on sélectionne resource ou resources lors de la génération de routes.

Utilisation des ressources dans les routes Rails

Voyons les routes générées lorsque nous utilisons resources dans les routes Rails.

resources :products

.

.

.

HTTP Verb Path Controller#Action Utilisé pour
GET /produits produits#index affiche une liste de tous les produits
GET /produits/nouveau produits#nouveau renvoie un formulaire HTML pour créer un nouveau produit
POST /produits produits#create créer un nouveau produit
GET /produits/ :id produits#show afficher un produit spécifique
GET /produits/:id/edit produits#edit renvoyer un formulaire HTML pour modifier un produit
PATCH/PUT /produits/ :id produits#mise à jour mise à jour d’un produit spécifique
DELETE /produits/ :id produits#destroy supprimer un produit spécifique

Utilisation de la ressource dans les routes Rails

Prenons l’exemple de l’utilisateur profile pour un utilisateur connecté sur le site web en utilisant l’application Rails.Le profil de l’utilisateur est censé être une entité (ressource) sur laquelle on doit travailler lorsque l’utilisateur est connecté.Nous ne voudrions pas que l’utilisateur final connaisse le profil ID de l’utilisateur.Ainsi,

  • Pour visualiser le profil, la route devrait être quelque chose comme www.example.com/profile
  • Pour modifier le profil, la route devrait être quelque chose comme www.example.com/profile/edit

etc.

Nous pouvons définir des routes pour la ressource profile comme indiqué ci-dessous.

resource :profile
Verbe HTTP Path Contrôleur#Action Utilisé pour
GET /profile/new profiles#new renvoie un formulaire HTML pour créer un nouveau profil
POST /profile profiles#create créer un nouveau profil
GET /profile profiles#show afficher un profil spécifique
GET /profile/edit profiles#edit renvoyer un formulaire HTML pour éditer un profil
PATCH/PUT /profile profiles#update mettre à jour un profil spécifique
DELETE /profil profils#destroy supprimer un profil spécifique

On peut voir que les routes de ressources singulières n’ont pas ID de la ressource.De plus, il dirige toujours les demandes vers le nom pluralisé du contrôleur.

Les guides Rails suggèrent :,

Parfois, vous avez une ressource que les clients recherchent toujours sans faire référence à un ID. Par exemple, vous aimeriez que /profile affiche toujours le profil de l’utilisateur actuellement connecté. Dans ce cas, vous pouvez utiliser une ressource singulière.

Différence entre ressource et ressources

.