我试图了解如何直接在 map.resources 上更改此规则:
假设我有一条路线:
map.resource :user, :as => ':user', :shallow => true do |user|
user.resources :docs, :shallow => true do |file|
file.resources :specs
end
end
所以我会有这样的 RESTful 路由:
/:用户/文档
/docs/:id
/docs/:doc_id/specs
所以我发现在这种情况下很难跟踪它,params[:doc_id]
因为有时是它params[:id]
,有时是它params[:doc_id]
,在这种情况下,我想总是调用一个特定的名称,这样我就不必为我的过滤器创建两个不同的声明。
好吧,我做了一些研究,发现了这个补丁:
http://dev.rubyonrails.org/ticket/6814
基本上,它的作用是让您能够在 map.resources 上添加一个 :key 参数,这样您就可以定义稍后引用它的方式,这样我们就可以有类似的东西:
map.resources :docs, :key => :doc ...
所以我总是会params[:doc]
改为调用参数。
但实际上这个补丁有点老了(现在已经 3 年了)所以我想知道我们是否没有任何更新的和已经内置的 Rails 来完成这项任务?
PS我不确定模型中定义的 to_param 方法,显然这并没有改变我的请求以及我仍然得到的日志:
Parameters: {"doc_id"=>"6"}
或者Parameters: {"id"=>"6"}
一直。