Lors de la configuration du routage dans Rails, je vais résumer ce que j'ai appris avec un examen.
Le routage dans les rails est la sélection de contrôleurs et d'actions à partir de l'URL demandée.
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
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
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
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 %>
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 %>
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