Ruby on rails 3 在Rails中布线时为什么使用match而不是get?

Ruby on rails 3 在Rails中布线时为什么使用match而不是get?,ruby-on-rails-3,routes,railstutorial.org,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 '

在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动词。为什么不使用<代码>获取<代码>(或<代码>:Vist>>[GET] <代码> > <代码>匹配<代码>,并限制路由动作作为实践问题?

我认为使用<代码> GET…[代码] >代码>代替“代码>匹配< /代码>是一个最佳实践。正如您已经正确提到的,
match
将创建GET和POST路由。如果您不需要它们,为什么要创建它们

使用正确的匹配器(get或post)可以保持路由干净,并有助于防止应用程序出现不必要的行为。后一点是正确的,尤其是对于POST路线,您不希望意外地在您的网页上放置一个GET请求链接,而该链接可能会被搜索机器人跟踪

更新[2013-05-12]:
从Rails 4.0开始,您现在是。

+1用于Rails 4.0更新。感谢您花时间更新旧答案。如果您有用于多个http动词的路由,那么现在猜测
匹配更好。@PetrosKyriakou为什么?我知道,使用框架的最佳实践有时会发生变化。不过,我认为情况并非如此。如果要同时提供
get
post
路由,请使用
get
post
关键字分别定义它们。正如更新的答案中提到的,Rails现在甚至强制您定义请求方法。我不知道最近发生了什么变化。@ ErrasOK考虑下面的内容:<代码>匹配> POST::ID '= > 'Posix[ActhiNoNe] ],通过:[::GET,POST ] < /代码>是否比单独写入更好?在分别编写它们时,几乎是干涸的原则在哪里?匹配不是适用于所有情况,而是适用于那些可以组合的情况。因此,如果您可以选择将两条路线组合成一行,为什么不这样做?顺便说一句,我不能给行动的名字起个好名字,但是看看这篇文章,
http://stackoverflow.com/questions/19722822/route-issue-in-rails-4-about-match-keyword-working-in-rails-3
@PetrosKyriakou现在我明白你的意思了。您是对的-
match
现在强制您指定请求类型,因此您不能“意外”创建不打算使用的路由。我同意
match
现在是在一条语句中生成多个请求类型的好方法。