Rails がネストされたリソースの親を自動的に推測する方法を知りたいです。私はRouteSetでいくつかの宿題をしましたが、module_evalと動的に生成されたすべてのメソッドで、それが親をどのように推測するかわかりませんでした.
これは私が具体的に話していることです
適切なモデルとコントローラーを備えた常緑の投稿とコメントのデータ階層を想定します。
これらのネストされたルーティングは次のようになります
resources :posts do
resources :comments
end
私がコントローラーまたはコメントレールのビューのコンテキストにいる場合、次のように投稿を推測できます。
post_comments_path
これは、現在の投稿の下のコメント インデックスにマップされます。
投稿コントローラーとビューのコンテキストにいる場合、レールはこのルートの投稿を推測できなくなり、提供する必要があります。
post_comments_path # error
post_comments_path(@post) # ok
他のスレッドでは、2 行目が正しい方法であることが示唆されています。
私は気が狂っているかもしれませんが、Rails がどのようにして Post を推測できるかを知りたいと思っています。ほとんどネストされたものへのメニュー リスト ルートのルート コントローラーに 1 つまたは 2 つのアクションがあるエッジ ケースがあります。私は、Rails にこれらのいくつかのアクションの現在の親が何であるかを伝えたいと思っています。
アップデート:
post_id パラメータを設定するという基本的なことを試しました。request-params と params の両方で実際に設定されていることを確認しますが、成功していません。Rails がパラメーターのコピーを作成したという漠然とした記憶があるので、おそらくルーティング ヘルパーは追加されたパラメーターなしで別のコピーを持っているのでしょうか? ( @post インスタンス変数を設定しても効果はありません。確認する必要がありました。)