在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
)并限制路由操作?
答案 0 :(得分:23)
我认为最佳做法是使用get [...]
代替match
。正如您已经正确提到的那样,match
将创建GET和POST路由。如果您不需要它们,为什么要创建它们?
使用正确的匹配器(获取或发布)可以保持路由清洁,并有助于防止应用程序出现意外行为。后一点适用于POST路由,您不希望在您的网页上意外地添加GET请求链接,搜索机器人可以跟随该链接。
更新[2013-05-12]: 从Rails 4.0开始,您现在required to explicitly specifiy the request method。