In config/routes.rb
heb ik beide geprobeerd:
root :to => 'things#index', :as => 'things'
en
root :to => 'things#index'
Als ik op http://localhost:3000/
druk, werken beide benaderingen en lijkt niets anders te zijn.
Waarvoor wordt de optie :as
gebruikt?
Antwoord 1, autoriteit 100%
De optie :as vormt een benoemde route.
Meestal wordt het gebruikt in een niet-rootroute. Bijvoorbeeld:
match '/search' => 'search#search', :as => 'search' # SearchController#search
Je zou dan zoiets kunnen doen:
<%= link_to search_path, 'Click Here to Search!' %>
search_path
en search_url
zijn gedefinieerd vanwege de :as
Voor een rootroute heb je :as
niet echt nodig omdat de URL-helpers root_path
en root_url
voor je worden gedefinieerd door Rails.
Antwoord 2, autoriteit 18%
Rails 4 compatibel.
In path_to_your_app/config/routes.rb
get "/profile/edit" => "users#profile_edit", :as => "edit_me"
Sinds ruby 2.0 kunt u het volgende gebruiken:
get "/profile/edit", to: "users#profile_edit", as: "edit_me"
In path_to_your_app/app/views/**in
vereiste weergave
<%= link_to "Edit profile", edit_me_path %>
Gebruik match
niet als je niet zeker weet of je het nodig hebt:
Het creëert een kwetsbaarheid wanneer je het in het volgende patroon gebruikt:
match ':controller/:action/:id'
Uit documentatie:
Gebruik de
match
-methode niet in uw router zonder
het specificeren van een HTTP-methode. Als je je actie aan beide wilt blootstellen:
GET en POST, voeg toe via:[:get, :post]
optie. Als je wilt bloot
uw actie om te GET, gebruik get in de router:In plaats van:
match "controller#action"
Doe:
get "controller#action"
Lees meer over:
Over wedstrijd
http://github.com/rails/rails/issues/5964
Over het in kaart brengen van routes
http://apidock.com/rails/v4. 0.2/ActionDispatch/Routing/Mapper/Base/match
http://api.rubyonrails.org/classes/ActionDispatch/ Routing/Mapper/Base.html
Over routes in het algemeen
http://api.rubyonrails.org/classes/ActionDispatch/Routing.html
Antwoord 3, autoriteit 6%
De optie :as
maakt een benoemd pad aan. Je kunt dit pad dan aanroepen in je controllers en views (bijv. redirect_to things_path
). Dit is niet erg handig voor het rootpad (omdat het al root
heette), maar is erg handig voor nieuwe routes die je toevoegt.