为什么在Rails中使用匹配而不是获取?

时间:2011-12-23 18:31:23

标签: ruby-on-rails-3 routes railstutorial.org

在Ruby on Rails 3教程中,代码使用:

match '/signup',  :to => 'users#new'
match '/signin',  :to => 'sessions#new'
match '/signout', :to => 'sessions#destroy'

match '/contact', :to => 'pages#contact'
match '/about',   :to => 'pages#about'
match '/help',    :to => 'pages#help'

而不是

get '/signup',  :to => 'users#new'
get '/signin',  :to => 'sessions#new'
get '/signout', :to => 'sessions#destroy'

get '/contact', :to => 'pages#contact'
get '/about',   :to => 'pages#about'
get '/help',    :to => 'pages#help'

即使所有路由只需要HTTP GET动词。为什么不在get上使用:via => [:get](或match)并限制路由操作?

1 个答案:

答案 0 :(得分:23)

我认为最佳做法是使用get [...]代替match。正如您已经正确提到的那样,match将创建GET和POST路由。如果您不需要它们,为什么要创建它们?

使用正确的匹配器(获取或发布)可以保持路由清洁,并有助于防止应用程序出现意外行为。后一点适用于POST路由,您不希望在您的网页上意外地添加GET请求链接,搜索机器人可以跟随该链接。

更新[2013-05-12]: 从Rails 4.0开始,您现在required to explicitly specifiy the request method