我已阅读官方指南,但仍有误解。 这段代码是否可以重构?routes.rb重构“匹配”
match '/help', :to => 'home#help'
match '/contact', :to => 'home#contact'
match '/about', :to => 'home#about'
help
,contact
和about
是在控制器home
的唯一动作。
我已阅读官方指南,但仍有误解。 这段代码是否可以重构?routes.rb重构“匹配”
match '/help', :to => 'home#help'
match '/contact', :to => 'home#contact'
match '/about', :to => 'home#about'
help
,contact
和about
是在控制器home
的唯一动作。
我这样做的预感,它不是在文档中提到,但它看起来像它的工作原理(我在轨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动词。但是我发现明确表达所接受的动词更好。
你应该能够速记在这里使用的轨道做:
match 'home/help'
match 'home/contact'
match 'home/about'
由于该方法名称匹配这应该工作。
这不会改变网址吗? –
你当然可以做
match '/:action', :controller => :home, :constraints => { :action => /^(help|contact|about)$/ }
但这既不漂亮,也不是真正的短
有趣的东西...... – lucapette
是的,它有时看起来像路由DSL读取我的脑海。这虽然没有记录,所以我不知道你能依靠多少。 –
谢谢,它非常酷! – evfwcqcg