#Ruby on Rails, Routes 🇫🇷

Maîtriser les Routes dans Ruby on Rails: Définition, Optimisation et Personnalisation

Sandri

Sandri

4 min read
Les routes dans Ruby on Rails jouent un rôle essentiel en dirigeant les requêtes HTTP vers les contrôleurs appropriés. Pourtant, leur mise en place peut parfois sembler déroutante. Dans cet article, nous examinerons comment travailler efficacement avec les routes dans une application Rails, avec le modèle Article comme fil conducteur.


Comment définir les routes dans Rails ?


Dans une application Rails, les routes sont définies dans le fichier config/routes.rb. Chaque route est associée à une action spécifique d'un contrôleur. Par exemple, dans le contexte d'une application de blog, pour définir une route vers l'action "show" du contrôleur ArticlesController, vous pouvez écrire :

get 'articles/:id', to: 'articles#show'

Cela signifie que si une requête GET est envoyée à l'URL /articles/:id, elle sera dirigée vers l'action "show" du contrôleur ArticlesController.

Rails propose également une syntaxe pratique pour définir un groupe de routes pour les actions CRUD (Create, Read, Update, Delete) courantes :

resources :articles

Cela génère huit routes différentes qui correspondent aux actions CRUD courantes pour le modèle Article :

  • Index - GET /articles (affiche une liste de tous les articles)
  • Create - POST /articles (crée un nouvel article)
  • New - GET /articles/new (affiche le formulaire pour créer un nouvel article)
  • Edit - GET /articles/:id/edit (affiche le formulaire pour éditer un article existant)
  • Show - GET /articles/:id (affiche un article spécifique)
  • Update - PUT /articles/:id (met à jour un article existant)
  • Update - PATCH /articles/:id (met également à jour un article existant, mais seulement certaines parties de celui-ci)
  • Destroy - DELETE /articles/:id (supprime un article existant)


Comprendre les blocs member et collection


Avant de plonger dans la personnalisation des routes, il est important de comprendre les blocs member et collection. Ceux-ci sont utilisés pour ajouter des routes supplémentaires à un ensemble de ressources. Leur principale différence va être dans la façon dont ils gèrent les routes :

  • Le bloc member est utilisé pour créer des routes qui nécessitent l'ID d'un élément spécifique de la ressource. Ces routes sont généralement utilisées pour des actions qui concernent un seul élément, comme l'affichage, la mise à jour ou la suppression d'un élément spécifique.

  • Le bloc collection, en revanche, est utilisé pour créer des routes qui n'ont pas besoin d'ID spécifique. Ces routes sont généralement utilisées pour des actions qui concernent l'ensemble des éléments de la ressource, comme l'affichage de tous les éléments ou la création d'un nouvel élément.


Comment personnaliser les routes dans Rails ?


Il arrive parfois que vous ayez besoin de routes qui ne correspondent pas aux actions CRUD courantes. Rails propose plusieurs manières de personnaliser vos routes pour ces situations.

Par exemple, vous pouvez établir des routes personnalisées pour des actions spécifiques à votre application :

get 'articles/:id/publish', to: 'articles#publish'
post 'articles/:id/archive', to: 'articles#archive'
post 'articles/tag', to: 'articles#tag'

Maintenant, avec la connaissance des blocs member et collection, vous pouvez également ajouter des routes personnalisées à un ensemble de ressources :

resources :articles do
  member do
    get 'publish'
    post 'archive'
  end

  collection do
    post 'tag'
  end
end

Dans cet exemple, les routes "publish" et "archive" s'appliqueront à des articles spécifiques (par exemple, /articles/:id/publish), tandis que la route "tag" s'appliquera à l'ensemble de la collection d'articles (par exemple, /articles/tag).

Une autre fonctionnalité de Rails est la possibilité de définir des routes personnalisées avec des helpers. Supposons que vous souhaitiez une route qui mène à une action "featured" dans le ArticlesController, et que vous vouliez générer facilement l'URL pour cette action. Vous pouvez le faire de la manière suivante :

get 'articles/featured', to: 'articles#featured', as: 'featured_articles'

Ici, l'option :as donne un nom à la route (featured_articles). Cela crée une route qui pointe vers l'action "featured" du ArticlesController. En utilisant l'option :as, Rails génère automatiquement deux 'route helpers' : (featured_articles_path et featured_articles_url) que vous pouvez utiliser dans votre application pour générer cette route."


🏁 Conclusion


Une bonne gestion des routes est cruciale pour le développement d'applications Rails. En maîtrisant la définition, l'amélioration et la personnalisation de vos routes, vous pouvez créer des applications plus performantes et faciles à maintenir. N'oubliez pas que les routes sont le premier point de contact dans le traitement d'une requête HTTP, donc leur conception peut avoir un impact majeur sur l'expérience utilisateur.

Cet article a été créé pour être un bon point de départ pour comprendre les routes dans Rails. Pour aller plus loin, n'hésitez pas à consulter la documentation officielle de Rails qui offre une mine d'informations pour approfondir les divers aspects du routage.
Feed
Sign up or Sign in to comment