[RUBY] Comment écrire le routage Rails

Aperçu

Lors de la configuration du routage dans Rails, je vais résumer ce que j'ai appris avec un examen.

Qu'est-ce que le routage

Le routage dans les rails est la sélection de contrôleurs et d'actions à partir de l'URL demandée.

Comment configurer le routage

Décrivez les paramètres dans le fichier config / routes.rb, et le contenu sera les paramètres de routage.

config/routes.rb


Rails.application.routes.draw do
  #Décrivez le routage ici
end

Comment écrire le routage

Les bases sont décrites dans "Method" Path "=>" Controller #Action "".

config/routes.rb


Rails.application.routes.draw do
  #Exemple
  get "about" => "top#about"
  post "login" => "sessions#login
end

Peut être omis si l'action du # contrôleur est la même que le chemin

config/routes.rb


Rails.application.routes.draw do
  #Exemple
  get "info/room"
end

Vous pouvez nommer le routage avec l'option as. L'appel de "chemin_nom_spécifié" comme méthode renvoie une chaîne avec "/ nom spécifié".

config/routes.rb


Rails.application.routes.draw do
  #Exemple
  get "help" => "document#help", as: "help"
end

Si vous écrivez ": paramètre", vous pouvez utiliser le paramètre comme chemin.

config/routes.rb


Rails.application.routes.draw do
  #Exemple
  get "posts/:year/:month" => "posts#show
end

Comment écrire un routage basé sur les ressources

Pour configurer le routage basé sur les ressources, écrivez la méthode resources et définissez le nom de la ressource au pluriel. De plus, pour définir le routage avec une seule ressource, décrivez la méthode de ressource et définissez le nom de la ressource sous une forme unique. La base de ressources Rails est un nom basé sur REST pour ce que le contrôleur gère.

config/routes.rb


Rails.application.routes.draw do
  #Exemple
  resources :users
  # get "users" => "users#index"
  # get "users/:id" => "users#show"
  # get "users/new" => "users#new"
  # get "users/:id/edit" => "users#edit"
  # post "users" => "users#create"
  # patch "users/:id" => "users#update"
  # delete "users/:id" => "users#destroy"
  resource :account
  # get "account" => "account#show"
  # get "account/new" => "account#new"
  # get "account/edit" => "account#edit"
  # post "account" => "account#create"
  # patch "account" => "account#update"
  # delete "account" => "account#destroy"
end

Si vous souhaitez ajouter une action supplémentaire au routage créé par la méthode resources, placez-la dans un bloc et décrivez-y la nouvelle méthode et l'action. Définissez "on :: collection" si l'action supplémentaire représente un ensemble, ou "on :: member" si vous souhaitez ajouter l'attribut id.

config/routes.rb


Rails.application.routes.draw do
  #Exemple
  resources :users do
    get "search", on: :collection
    patch "suspend", "restore", on: :member
  end
end

Parmi les actions créées par la méthode resources, transmettez la seule option ou sauf action pour les actions inutiles et définissez l'action.

config/routes.rb


Rails.application.routes.draw do
  #Exemple
  resources :users, only: [:index, :show]
  resources :users, except: [:show]
end

Spécifier le chemin

Le chemin défini par routage peut être spécifié par la méthode link_to ou la méthode redirect_to. Exemple: utilisateurs de noms de ressources

action URL chemin
index users users_path
show users/:id user_path(user)
new users/new new_user_path
edit users/:id/edit edit_user_path(user)
create users users_path
update users/:id user_path(user)
destroy users/:id user_path(user)

:~view.html.erb


<%= link_to "liste", users_path %>

Vous pouvez obtenir le paramètre id en passant un objet de modèle comme argument. Vous pouvez également utiliser l'option method pour distinguer les méthodes HTTP.

:~view.html.erb


<%= link_to "Supprimer", user_path(@user), method: :delete %>

Simplification du chemin

Vous pouvez également spécifier un chemin simplifié. Si vous passez un objet de modèle comme deuxième argument, vous pouvez le remplacer par le même chemin que celui avec le paramètre id.

:~view.html.erb


<%= link_to "Supprimer", users_path(@user), method: :delete %>
     ↓
<%= link_to "Supprimer", @user, method: :delete %>

Les actions qui gèrent des ressources individuelles peuvent être définies dans [: nom de l'action, objet modèle].

:~view.html.erb


<%= link_to "Éditer", edit_user_path(@user) %>
     ↓
<%= link_to "Éditer", [edit, @user] %>

Les actions qui gèrent des ressources qui ne nécessitent pas d'identifiant peuvent être définies en omettant "_path" et en utilisant un symbole.

:~view.html.erb


<%= link_to "liste", users_path %>
     ↓
<%= link_to "liste", :users %>

Sommaire

J'ai acquis une nouvelle compréhension du routage et des chemins. Comme j'écris souvent des programmes dans un état simplifié pour le routage et les chemins, j'ai tendance à oublier la forme originale, donc je suis heureux d'avoir pu apprendre à récupérer maintenant. Je pense qu'il existe un moyen de définir le routage si je l'étudie en détail, je voudrais donc l'ajouter au besoin.

Recommended Posts

Comment écrire le routage Rails
[Refactoring] Comment écrire le routage
Comment écrire des graines de Rails
[Rails] Comment écrire la gestion des exceptions?
Comment désinstaller Rails
Comment écrire docker-compose
Comment écrire Mockito
[rails] Comment configurer le routage dans les ressources
Comment écrire un fichier de migration
Rails: comment bien écrire une tâche de râteau
[Rails] Comment écrire lors de la création d'une sous-requête
[rails] Comment publier des images
Comment écrire du bon code
[Rails] Comment utiliser enum
[Rails] Comment utiliser enum
Comment rédiger un commentaire java
Comment lire les itinéraires des rails
Comment utiliser la jonction de rails
Comment écrire Junit 5 organisé
Comment terminer le serveur de rails
[Rails] Comment utiliser la validation
[Rails] Comment désactiver les turbolinks
[Rails] Comment utiliser authenticate_user!
[Rails] Comment mettre en œuvre le scraping
[Rails] Comment faire des graines
[Rails] Comment installer simple_calendar
[Rails] Comment installer reCAPTCHA
[Rails] Comment utiliser Scope
[Ruby on Rails] Comment écrire enum en japonais
Comment écrire une recherche de comparaison de dates dans Rails
[Rails] Comment utiliser la "devise" des gemmes
[Rails] Comment utiliser l'appareil (Remarque)
[Rails] Deux façons d'écrire form_with
[Rails] Comment utiliser les messages flash
[rails] Comment afficher les informations de base de données
Étudier Java # 6 (Comment écrire des blocs)
Comment utiliser Ruby on Rails
Comment déployer Bootstrap sur Rails
[Rails] Comment accélérer la composition de docker
[Rails] Comment ajouter de nouvelles pages
[Rails] Comment installer ImageMagick (RMajick)
Comment écrire une déclaration de variable Java
[Rails] Comment installer Font Awesome
[Rails] Comment utiliser Active Storage
Comment installer jQuery dans Rails 6