: 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?

45
demandé sur Alan Gabbianelli 2011-01-15 00:38:41

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.

74
répondu Andy Lindeman 2011-01-14 21:47:07

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

13
répondu Roman Bambycha 2018-01-17 15:46:27

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.

4
répondu David Sulc 2011-01-14 21:44:01