Nous avons résumé le routage dans les applications Rails.
Vérifiez «l'effet du routage» et «l'utilisation pratique».
** Conclusion ** -Il sera possible de transmettre le traitement au contrôleur et l'action en fonction de la requête HTTP. Les méthodes -Helper vous permettent de créer des chemins et des URI dans les contrôleurs et les vues.
Lors du routage, les requêtes HTTP des clients sont triées par le code suivant.
Image du routage
[Méthode HTTP] '[Chemin URI]', to: '[Nom du contrôleur]#[Nom de l'action]'
Exemple) get 'samples', to: 'samples#index'
En d'autres termes, dans cet exemple ...
Lorsque le client accède avec ** "méthode GET" ** et ** "chemin des échantillons" ** Processus avec ** "action d'indexation" ** du ** "contrôleur d'échantillons" ** de l'application Rails
Cela signifie que · · ·
En décrivant le routage, vous pouvez utiliser ** "\ _path method" et "\ _url method" ** dans l'application Rails. Cette méthode permet de décrire la méthode redirect_to dans le contrôleur, la méthode link_to dans la vue, etc. en utilisant path.
C'est une méthode d'assistance qui génère facilement des chemins et des URL en l'utilisant comme ** "[Préfixe] \ _ chemin" ** ou ** "[Préfixe] \ _ url" **.
Ce sera le fichier config / routes.rb
.
config/routes.rb
Rails.application.routes.draw do
get 'samples', to: 'samples#index'
end
Vous pouvez le vérifier en exécutant la commande rails routes
dans le répertoire de l'application à l'aide du terminal.
Terminal
(Répertoire des applications)$ rails routes
Prefix Verb URI Pattern Controller#Action
samples GET /samples(.:format) samples#index
** "Prefix", "Verb", "URI Pattern", "Controller # Action" ** sont affichés. Déterminez le contenu de la requête HTTP en combinant ** "Verb and URI Pattern" ** ** "Controller # Action" ** indique où passer le processus.
C'est comme une variable utilisée lors de l'utilisation de la "méthode \ _path" et de la "méthode \ _url".
Exemple) samples_path => "/ samples" samples_url => " http://sample.com/samples "
C'est une méthode HTTP qui détermine le traitement.
C'est le chemin de l'URI à traiter.
Ce sera le nom du contrôleur et le nom de l'action pour passer le processus.
Rails a ** "7 types d'actions" ** qui sont utilisés en standard.
Nom de l'action | Utilisation conforme |
---|---|
index | liste |
new | Afficher le nouveau formulaire de données |
create | Enregistrer de nouvelles données |
show | Afficher des données spécifiques |
edit | Afficher le formulaire d'édition de données spécifiques |
update | Mettre à jour des données spécifiques |
destroy | Supprimer des données spécifiques |
Il peut être divisé en deux. ** "Paramètres individuels" ** et ** "Paramètres de lot" **.
C'est le code qui définit le routage ** ligne par ligne **.
Rails.application.routes.draw do
get 'samples', to: 'samples#index'
post 'samples', to: 'samples#create'
put 'samples/:id', to: 'samples#update'
end
Vous pouvez écrire plusieurs paramètres de routage dans un code court.
C'est un code qui permet de définir le routage de ** 7 actions ** sur une seule ligne.
Rails.application.routes.draw do
resources :samples
end
Identique au routage configuré individuellement suivant
Rails.application.routes.draw do
get 'samples', to: 'samples#index'
post 'samples', to: 'samples#create'
get 'samples/new', to: 'samples#new', as: 'new_sample'
get 'samples/:id/edit', to: 'samples#edit', as: 'edit_sample'
get 'samples/:id', to: 'samples#show', as: 'sample'
patch 'samples/:id', to: 'samples#update'
put 'samples/:id', to: 'samples#update'
delete 'samples/:id', to: 'samples#destroy'
end
En définissant ** "comme: 'XXX'" **, vous pouvez spécifier "XXX" ** dans ** Préfixe.
C'est un code qui permet de définir le routage de 6 actions ** autres que l'action d'index ** sur une ligne. Il est utilisé lorsque ** chaque utilisateur n'a qu'une seule information (ressource) dans la conception de l'application. Comme il ne contient qu'une seule information, il n'y a pas d'action d'index (listant plusieurs ressources) ** ": id" ** n'est pas ajouté au chemin URI.
Notez également que ** les contrôleurs sont au pluriel **.
Rails.application.routes.draw do
resource :sample #C'est sous la forme singulière
end
Identique au routage configuré individuellement suivant
Rails.application.routes.draw do
post 'sample', to: 'samples#create'
get 'sample/new', to: 'samples#new', as: 'new_sample'
get 'sample/edit', to: 'samples#edit', as: 'edit_sample'
get 'sample', to: 'samples#show', as: 'sample'
patch 'sample', to: 'samples#update'
put 'sample', to: 'samples#update'
delete 'sample', to: 'samples#destroy'
end
Lorsque vous souhaitez utiliser certaines des ressources / actions de routage de ressources ** Spécifiez "uniquement option" ** et ** "sauf option" **.
Rails.application.routes.draw do
#N'utilisez que des actions d'indexation / d'affichage
resources :users, only: [:index, :show]
#Utiliser des actions autres que index / afficher / modifier / mettre à jour / détruire
resources :books, except: [:index, :show, :edit, :update , :destroy]
end
$ rails routes
Prefix Verb URI Pattern Controller#Action
users GET /users(.:format) users#index
user GET /users/:id(.:format) users#show
books POST /books(.:format) books#create
new_book GET /books/new(.:format) books#new
En plus des sept actions de base de Rails, vous pouvez ajouter des actions avec ** "routage de membre" ** et ** "routage de collection" **.
Il s'agit d'une méthode de routage qui inclut ** ": id" ** dans le chemin URI.
routage des membres
Rails.application.routes.draw do
resources :photos do
member do
get 'preview'
end
end
end
$ rails routes
Prefix Verb URI Pattern Controller#Action
preview_photo GET /photos/:id/preview(.:format) photos#preview
photos GET /photos(.:format) photos#index
Il s'agit d'une méthode de routage qui n'inclut pas le chemin URI ** ": id" **. Le code est écrit de la même manière que le routage des membres.
«Id» est le numéro de gestion des données enregistrées dans l'application. La présence d'un "id" dans le chemin signifie que "lors de l'exécution de cette action, le numéro de contrôle identifie les données requises".
Par exemple, si vous expliquez avec 7 actions de base de Rails Les ** actions index / new / create ** n'ont pas d '"id" dans le chemin. La raison en est que ** aucune donnée spécifique ** n'est nécessaire pour afficher la liste, et ** les données à enregistrer ** n'ont pas d '"identifiant".
Au contraire, ** afficher / modifier / mettre à jour / détruire les actions ** ** Parce que vous pouvez afficher, modifier ou supprimer des données enregistrées spécifiques ** Sans le "id" ** je ne sais pas quelles données **, donc le chemin contient le "id".
Cela signifie «imbriqué». Indique que l'élément enfant est décrit dans l'élément parent dans une structure imbriquée dans le routage.
Exemple)Routage des ressources imbriquées
Rails.application.routes.draw do
resources :books do
resources :reviews
end
end
Dans cet exemple, l'élément parent appelé books a un élément enfant appelé reviews imbriqués.
Le routage imbriqué vous permet d'associer un élément parent au routage d'un élément enfant. Dans le cas de l'exemple ci-dessus, les avis (éléments enfants) sont toujours liés à un livre spécifique (élément parent). Si vous vérifiez le routage des avis (élément enfant), cela ressemblera à ceci.
Prefix Verb URI Pattern Controller#Action
book_reviews GET /books/:book_id/reviews(.:format) reviews#index
POST /books/:book_id/reviews(.:format) reviews#create
new_book_review GET /books/:book_id/reviews/new(.:format) reviews#new
edit_book_review GET /books/:book_id/reviews/:id/edit(.:format) reviews#edit
book_review GET /books/:book_id/reviews/:id(.:format) reviews#show
PATCH /books/:book_id/reviews/:id(.:format) reviews#update
PUT /books/:book_id/reviews/:id(.:format) reviews#update
DELETE /books/:book_id/reviews/:id(.:format) reviews#destroy
Les éléments ** "Prefix" ** et ** "URI Pattern" ** ont un effet d'imbrication.
L'élément parent vient avant l'élément enfant.
C'est un préfixe qui contient des éléments parents (livres) tels que book_reviews
et new_book_review
.
L'élément enfant est précédé de l'élément parent et de l'ID de l'élément parent.
Ce sera un motif URI contenant un élément parent (livre) appelé / books /: book_id / reviews
.
La partie / books /: book_id
est le chemin qui représente un élément parent spécifique
"À quel élément parent l'élément enfant est connecté" sera explicitement affiché.
C'est tout.
Recommended Posts