开发者

:as in rails routes.rb

开发者 https://www.devze.com 2023-02-04 15:33 出处:网络
In config/routes.rb, I tried both:开发者_开发知识库 root :to => \'things#index\', :as => \'things\'

In config/routes.rb, I tried both:开发者_开发知识库

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

and

root :to => 'things#index'

When I hit http://localhost:3000/, both approaches work, and nothing seems to be different.

What is the :as option used for?


The :as option forms a named route.

Usually it's used in a non-root route. For example:

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

You could then do something like:

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

search_path and search_url are defined because of the :as

For a root route, you don't really need :as because the the URL helpers root_path and root_url are defined for you by Rails.


Rails 4 compatible.

In path_to_your_app/config/routes.rb

get "/profile/edit" => "users#profile_edit", :as => "edit_me"

Since ruby 2.0 you can use:

get "/profile/edit", to: "users#profile_edit", as: "edit_me"

In path_to_your_app/app/views/**in required view

<%= link_to "Edit profile", edit_me_path %>

Do not use match if you aren't sure you need it:

It creates a vulnerability when you use it in next pattern:

match ':controller/:action/:id'

From documentation:

You should not use the match method in your router without specifying an HTTP method. If you want to expose your action to both GET and POST, add via: [:get, :post] option. If you want to expose your action to GET, use get in the router:

Instead of: match "controller#action"

Do: get "controller#action"

Read more about:

About match

http://github.com/rails/rails/issues/5964

About routes mapping

http://apidock.com/rails/v4.0.2/ActionDispatch/Routing/Mapper/Base/match

http://api.rubyonrails.org/classes/ActionDispatch/Routing/Mapper/Base.html

About routes in general

http://api.rubyonrails.org/classes/ActionDispatch/Routing.html


The :as option creates a named path. You can then call this path in your controllers and views (e.g. redirect_to things_path). This isn't very useful for the root path (as it already named root), but is very useful for new routes you add.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号