我想了解如何直接改變這個規則對map.resources:Rails的REST風格的路線:覆蓋PARAMS [:ID]或PARAMS [:MODEL_ID]默認
假設我有一個路線:
map.resource :user, :as => ':user', :shallow => true do |user|
user.resources :docs, :shallow => true do |file|
file.resources :specs
end
end
所以我會REST風格的路線是這樣的:
/:用戶/文檔
/文檔/:ID
/文檔/:DOC_ID /規格
因此,我認爲這是很難跟蹤params[:doc_id]
在這種情況下,因爲有時它params[:id]
,有時它params[:doc_id]
在這種情況下,我想隨時撥打一個特定的名字所以我不必爲我的過濾器創建兩個不同的聲明。
好吧,我做了一點點研究,我發現這個補丁:
http://dev.rubyonrails.org/ticket/6814
,基本上這樣做是給你添加的功能:關鍵參數上你map.resources所以你可以定義你想如何引用它以後,所以我們可以有這樣的事:
map.resources :docs, :key => :doc ...
,所以我總是會叫帕拉姆與params[:doc]
代替。
但實際上這個補丁有點舊(3年現在) 所以我想知道如果我們沒有任何新的東西,並且已經內置了rails來完成這個任務嗎?
P.S我不知道有關模型中定義的方法to_param,顯然這並沒有對我的要求改變什麼,並在日誌中我仍然得到: Parameters: {"doc_id"=>"6"}
或Parameters: {"id"=>"6"}
所有的時間。
我發佈後發佈,我不完全回答你的問題。 Rails沒有你正在尋找的內置功能,指向當前資源的params [:id]的默認值仍然是要走的路。爲了一致性,父記錄獲取參數[:parent_id]。對於當前資源之外的全局過濾器,爲什麼不將恰當的變量作爲參數傳遞給過濾器? – bensie 2009-11-21 18:45:58
是的,沒錯,謝謝bensie。但仍然,這件事關於不給你改變資源鍵的可能性,它的那種毫無意義的不是嗎?在這種情況下會有什麼缺點? 我不明白:\ – zanona 2009-11-21 19:21:09