我最近發現與路由和動作相關的導軌中存在一個奇怪的行爲,具體來說,這是在rails 2.3.5。我有一個控制器,我們稱之爲用戶。在路線中,我將用戶聲明爲資源。Rails總是路由動作以顯示動作,而動作自己變成了標識
map.resources :users
而在控制器內,我有標準動作:index, show, edit, update & destroy
。此外,我添加了其他行動滿足某些要求。
def generated_pdf_report
# do something
end
問題是,當我去/users/generated_pdf_report
頁,我得到這個在控制檯上:
Processing UsersController#show (some timestamps) [GET]
Parameters: {"action"=>"show", "id"=>"generated_pdf_report", "controller"=>"users"}
正如你所看到的,服務器將請求路由到方法show
,而不是方法generated_pdf_report
。 有趣的是什麼,是我有其他控制器有類似的行動,並工作正常。
解決上述問題是很容易的,確保增加的飼料資源上面:
map.feed 'users/generated_pdf_report', :controller => 'users', :action => 'generated_pdf_report'
map.resources :users
我的問題是:任何人都知道爲什麼軌的行爲就像是什麼?上述解決方案有點草率,您認爲上述問題的最佳實踐如何?