私は、Rails 3 ルートに関する非常にトリッキーな問題で立ち往生しており、これを自分で解決するには十分なルートがありません。「表示」と「インデックス」アクションのみの「レビュー」リソースがあります。スラッグ ID には Friendly ID gem を使用しています。ネストされたコメント リソースもあり、レビューにコメントすることができます。
resources :reviews, :only => [:index, :show] do
resources :comments, :only => [:new, :create]
end
したがって、これまでのところ、インデックス ページのパスは単に「レビュー」であり、ショー アクションの場合は「レビュー/マトリックス」のようなものです。これまでのところ十分に単純です。
まず最初に、メインのインデックス ページで問題が発生しました。インデックス ページに will_paginate ジェムがあり、ページをキャッシュしています。問題は、パスが /reviews?page=2 のようなパスの場合にキャッシュが機能しないことです。むしろ、ページネーションを通過するときにパスを /reviews/2/ にする必要があるため、前のレビュー リソースの上に次のように追加しました。これを機能させます。
match 'reviews(/:page)' => 'reviews#index', :constraints => { :page => /[0-9]/ }
なぜ制約?上記の行 (数の制約なし) は、「表示」ルートを妨害する「キャッチオール」になってしまうため、私の「表示」リソース ルートは機能しません。show アクションの ID は常に単語になるため、インデックスのページ分割されたページには常に番号が付けられるため、このようにしました。
しかし、ここに問題があります。「ショー」ルートを単に「レビュー/マトリックス」にしたくありません。ほら、すべてのレビューはレビューされているものの種類によって分類されているので、実際には「ショー」パスを「レビュー/映画/マトリックス」または「レビュー/本/ロードオブザリング」のようにしたいと思います.'
「レビュー/書籍」などの追加のカテゴリ インデックス ページには、元のレビューの「表示」パスを使用したいと思います。(上記の制約の別の理由。)しかし、この質問を複雑にしすぎたくないので、別のSOの質問のためにそれを保存します。
では、前の質問に戻ります。通常、レビュー リソースにネストされたコメントがあることを除いて、上記は単純な「一致」ルート (ルート グロビングを使用) で解決できると思います。レビューでコメントのネストされたリソースを保持しながら、上記のような「表示」ページを作成するにはどうすればよいですか?