このルールを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]
この場合は追跡が難しいことがわかります。これは、フィルターに対して2つの異なる宣言を作成する必要がないように、常に1つの特定の名前を呼び出したいためです。params[:id]
params[:doc_id]
さて、私は少し調査を行い、次のパッチを見つけました。
http://dev.rubyonrails.org/ticket/6814
基本的にこれが行うことは、 map.resources に :key パラメータを追加できるようにすることです。これにより、後で参照する方法を定義して、次のようなものを作成できます。
map.resources :docs, :key => :doc ...
そのため、代わりに常にパラメーターを呼び出しますparams[:doc]
。
しかし、実際にはこのパッチは少し古い (今では 3 年) ので、レールがこのタスクを実行するための新しいものが既に組み込まれていないのではないかと考えていました。
PSモデル内で定義されたto_paramメソッドについてはわかりません。明らかに、これは私のリクエストと私がまだ取得しているログで何も変更しませんでした:
Parameters: {"doc_id"=>"6"}
またはParameters: {"id"=>"6"}
常に。