:如rails routes.rb

时间:2011-01-14 21:38:41

标签: ruby-on-rails ruby ruby-on-rails-3 routing

3 个答案:

答案 0 :(得分:82)

: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_pathroot_url

答案 1 :(得分:14)

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行动,在路由器中使用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

答案 2 :(得分:5)

:as选项可创建命名路径。然后,您可以在控制器和视图中调用此路径(例如redirect_to things_path)。这对于根路径(因为它已经命名为root)不是很有用,但对于您添加的新路由非常有用。