: как в rails route.rb

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

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

а также

root :to => 'things#index'

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

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


person ryanprayogo    schedule 14.01.2011    source источник


Ответы (3)


Параметр :as формирует именованный маршрут.

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

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.

person Andy Lindeman    schedule 14.01.2011
comment
для создания помощников пути и URL! - person ahnbizcad; 21.10.2014

Совместимость с рельсами 4.

In 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, добавьте опцию via: [: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

person Roman Bambycha    schedule 10.08.2013

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

person David Sulc    schedule 14.01.2011