В config/routes.rb
я попробовал оба:
root :to => 'things#index', :as => 'things'
и
root :to => 'things#index'
Когда я нажал http://localhost:3000/
, оба подхода работают, и ничто не кажется другим.
Что используется для опции :as
?
В config/routes.rb
я попробовал оба:
root :to => 'things#index', :as => 'things'
и
root :to => 'things#index'
Когда я нажал http://localhost:3000/
, оба подхода работают, и ничто не кажется другим.
Что используется для опции :as
?
Параметр: as формирует именованный маршрут.
Обычно он используется в некорневом маршруте. Например:
match '/search' => 'search#search', :as => 'search' # SearchController#search
Затем вы можете сделать что-то вроде:
<%= link_to search_path, 'Click Here to Search!' %>
search_path
и search_url
определяются из-за :as
Для корневого маршрута вам действительно не нужно :as
, поскольку для него Rails заданы URL-адреса помощников root_path
и root_url
.
path_to_your_app/config/routes.rb
get "/profile/edit" => "users#profile_edit", :as => "edit_me"
Так как ruby 2.0 вы можете использовать:
get "/profile/edit", to: "users#profile_edit", as: "edit_me"
path_to_your_app/app/views/**in
требуемый вид<%= link_to "Edit profile", edit_me_path %>
match
, если вы не уверены, что вам это нужно:Это уязвимость, когда вы используете ее в следующем шаблоне:
match ':controller/:action/:id'
Из документации:
Нельзя использовать метод
match
на вашем маршрутизаторе без указав метод HTTP. Если вы хотите подвергнуть свое действие обоим GET и POST, добавьте через:[:get, :post]
вариант. Если вы хотите разоблачить ваше действие GET, используйте get в маршрутизаторе:Вместо
match "controller#action"
Do:
get "controller#action"
http://github.com/rails/rails/issues/5964
http://apidock.com/rails/v4.0.2/ActionDispatch/Routing/Mapper/Base/match
http://api.rubyonrails.org/classes/ActionDispatch/Routing/Mapper/Base.html
http://api.rubyonrails.org/classes/ActionDispatch/Routing.html
Параметр :as
создает именованный путь. Затем вы можете вызвать этот путь в своих контроллерах и представлениях (например, redirect_to things_path
). Это не очень полезно для корневого пути (так как он уже назван root
), но очень полезен для добавления новых маршрутов.