[RUBY] Que se passe-t-il en raison de l'imbrication du routage

Environnement d'exploitation Ruby 2.6.5 Rails 6.0.3.2

Il était difficile de comprendre ce qui se passait en raison de l'imbrication du routage, je l'ai donc posté pour ma propre confirmation.

Lorsque le routage est imbriqué

routes.rb


Rails.application.routes.draw do
  resources :hoges do
    resources :fugas, only: [:index]
  end
end

Dans le code ci-dessus, les fugas sont imbriqués pour les hoges, et lorsque j'exécute des itinéraires de rails sur le terminal, cela ressemble à ceci:

Prefix ➡︎ hoge_fugas Verb ➡︎ GET URI Pattern ➡︎ /hoges/:hoge_id/fugas(.:format) Controller#Action ➡︎ fugas#index

Bien sûr, autre que ce qui précède est également affiché, mais cette fois seule la partie imbriquée sera traitée. Cela seul n'est pas facile à comprendre, alors comparons-le au cas où le routage n'est pas imbriqué.

Lorsque vous n'emboitez pas les itinéraires

routes.rb


Rails.application.routes.draw do
  resources :hoges
  resources :fugas, only: [:index]
end

Le code ci-dessus n'est pas imbriqué, contrairement au code précédent. Maintenant, exécutez des itinéraires de rails sur le terminal comme auparavant et vérifiez la même partie.

Prefix ➡︎ fugas Verb ➡︎ GET URI Pattern ➡︎ /fugas(.:format) Controller#Action ➡︎ fugas#index

Vous pouvez voir que le préfixe et le modèle d'URI sont différents par rapport au précédent. Le préfixe est une description simple du modèle d'URI, nous nous concentrerons donc uniquement sur le modèle d'URI.

Différence entre l'imbrication avec et sans routage

Lorsqu'il est imbriqué URI Pattern ➡︎ /hoges/:hoge_id/fugas(.:format) Si non imbriqué URI Pattern ➡︎ /fugas(.:format)

En d'autres termes, on peut dire que l'imbrication de routage est effectuée pour changer le modèle d'URI. Cependant, cette phrase est difficile à comprendre, je vais donc l'expliquer un peu plus en détail.

Vous devrez spécifier hoge_id pour que l'action d'index du contrôleur fugas fonctionne car le modèle d'URI a changé en raison de l'imbrication. Par conséquent, vous pouvez mettre hoge_id dans les paramètres. En d'autres termes, j'ai mentionné plus tôt que l'imbrication du routage sert à changer le modèle d'URI, mais elle peut être reformulée comme ** pour mettre les informations d'identification du côté d'imbrication (hoge cette fois) dans les paramètres **. Je peux le faire.

En mettant les informations d'id du côté imbriqué (hoge cette fois) dans les paramètres, il est possible de gérer les informations du côté imbriqué dans le contrôleur du côté imbriqué (fuga cette fois).

Recommended Posts

Que se passe-t-il en raison de l'imbrication du routage