我已閱讀官方指南,但仍有誤解。 這段代碼是否可以重構?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