我读过官方指南,但仍然有误解。 这段代码能够重构吗?
match '/help', :to => 'home#help'
match '/contact', :to => 'home#contact'
match '/about', :to => 'home#about'
help
,contact
和about
是控制器home
中的唯一操作。
答案 0 :(得分:3)
我是预感到的,并没有在文档中提到它,但看起来它有效(我在rails 3.1上):
controller :home do
get 'help'
get 'contact'
get 'about'
end
这也会创建help_url
,help_path
等帮助者。
但是有一个警告,这会将http谓词限制为GET
。如果您有POST
操作(例如,对于联系表单),您可以执行以下任一操作:
controller :home do
get 'help'
match 'contact', :via => [:get, :post]
get 'about'
end
或只是:
controller :home do
get 'help'
match 'contact'
get 'about'
end
将允许联系路由上的所有http动词。但我觉得最好明确接受动词。
答案 1 :(得分:1)
你应该可以在这里使用rails速记并执行:
match 'home/help'
match 'home/contact'
match 'home/about'
由于方法名称匹配,这应该有用。
答案 2 :(得分:1)
你当然可以做
match '/:action', :controller => :home, :constraints => { :action => /^(help|contact|about)$/ }
但这不是更漂亮,也不是更短