12

在 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]on match)并限制路由操作作为实践?

4

1 回答 1

23

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

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

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

于 2011-12-23T19:35:05.337 回答