:在轨道routes.rb

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_pathsearch_url被定义为:as

对于根路由,您并不需要:as因为URL助手root_pathroot_url是由Rails为您定义的。

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' 

从文档:

如果不指定HTTP方法,则不应在路由器中使用match方法。 如果你想把你的动作暴露给GET和POST,添加via: [:get, :post]选项。 如果你想暴露你的行动GET,使用get在路由器:

而不是: match "controller#action"

做: 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选项创build一个命名path。 然后你可以在你的控制器和视图中调用这个path(例如redirect_to things_path )。 这对于根path来说并不是非常有用(因为它已经命名为root ),但是对于添加的新路由非常有用。