: comme dans rails routes.RB
Dans config/routes.rb
, j'ai essayé les deux:
root :to => 'things#index', :as => 'things'
Et
root :to => 'things#index'
Quand je frappe http://localhost:3000/
, les deux approches fonctionnent, et rien ne semble être différent.
À quoi sert l'option :as
?
3 réponses
L'option: as forme une route nommée.
Habituellement, il est utilisé dans une route non-racine. Par exemple:
match '/search' => 'search#search', :as => 'search' # SearchController#search
Vous pouvez alors faire quelque chose comme:
<%= link_to search_path, 'Click Here to Search!' %>
search_path
et search_url
sont définies en raison de la :as
Pour une route racine, vous n'avez pas vraiment besoin de :as
car les helpers D'URL root_path
et root_url
sont définis pour vous par Rails.
Rails 4 compatible.
Dans path_to_your_app/config/routes.rb
get "/profile/edit" => "users#profile_edit", :as => "edit_me"
Depuis ruby 2.0, vous pouvez utiliser:
get "/profile/edit", to: "users#profile_edit", as: "edit_me"
Dans path_to_your_app/app/views/**in
vue requise
<%= link_to "Edit profile", edit_me_path %>
N'utilisez pas match
Si vous n'êtes pas sûr d'en avoir besoin:
Cela crée une vulnérabilité lorsque vous l'utilisez dans le modèle suivant:
match ':controller/:action/:id'
De la documentation:
Vous ne devez pas utiliser la méthode
match
dans votre routeur sans spécification D'une méthode HTTP. Si vous voulez exposer votre action aux deux Obtenir et poster, ajouter via:[:get, :post]
option. Si vous voulez exposer votre action pour obtenir, utilisez get dans le routeur:Au Lieu de:
match "controller#action"
Faire:
get "controller#action"
En savoir plus sur:
À propos de match
Http://github.com/rails/rails/issues/5964
Sur les itinéraires cartographie
Http://apidock.com/rails/v4.0.2/ActionDispatch/Routing/Mapper/Base/match
Http://api.rubyonrails.org/classes/ActionDispatch/Routing/Mapper/Base.html
Sur les routes en général
Http://api.rubyonrails.org/classes/ActionDispatch/Routing.html
L'option :as
crée un chemin nommé. Vous pouvez ensuite appeler ce chemin dans vos contrôleurs et vues (par exemple redirect_to things_path
). Ce n'est pas très utile pour le chemin racine (comme il l'a déjà nommé root
), mais il est très utile pour les nouvelles routes que vous ajoutez.