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

Geo*_*haw 12 routes ruby-on-rails-3 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'
Run Code Online (Sandbox Code Playgroud)

而不是

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'
Run Code Online (Sandbox Code Playgroud)

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

emr*_*ass 23

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

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

更新[2013-05-12]:从Rails 4.0开始,您现在需要明确指定请求方法.

  • 为rails 4.0更新+1​​.感谢您抽出宝贵时间更新旧答案. (5认同)