: как в рельсах rout.rb - PullRequest
       0

: как в рельсах rout.rb

55 голосов
/ 15 января 2011

В config/routes.rb, я попробовал оба:

root :to => 'things#index', :as => 'things'

и

root :to => 'things#index'

Когда я нажимаю http://localhost:3000/, оба подхода работают, и ничто не кажется разным.

Для чего используется опция :as?

Ответы [ 3 ]

83 голосов
/ 15 января 2011

Опция: as формирует именованный маршрут.

Обычно он используется не-корневым маршрутом. Например:

match '/search' => 'search#search', :as => 'search' # SearchController#search

Вы можете сделать что-то вроде:

<%= link_to search_path, 'Click Here to Search!' %>

search_path и search_url определены из-за :as

Для корневого маршрута вам не нужен :as, потому что URL-помощники root_path и root_url определены для вас Rails.

14 голосов
/ 10 августа 2013

совместимые с Rails 4.

В 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 в маршрутизаторе:

Вместо: 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

5 голосов
/ 15 января 2011

Опция :as создает именованный путь.Затем вы можете вызвать этот путь в ваших контроллерах и представлениях (например, redirect_to things_path).Это не очень полезно для корневого пути (как он уже назван root), но очень полезно для добавляемых вами новых маршрутов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...