Rails 3のルートに関する非常に面倒な問題に悩まされています。私は "ショー"と "インデックス"アクションだけを持つ "レビュー"リソースを持っています。私はslugged IDのFriendly ID gemを使用しています。また、レビューにコメントできるネストされたコメントリソースもあります。Ruby on Rails - インデックス/ショーページとページネーションによるレビューリソースのカスタムルーティング
resources :reviews, :only => [:index, :show] do
resources :comments, :only => [:new, :create]
end
インデックスページのこれまでのパスは、単に「レビュー」であり、showアクションのための「レビュー/マトリックス」のようなものです。これまでのところ単純です。
まず最初に、私はメインのインデックスページで一種の問題にぶつかりました。インデックスページにwill_paginateの宝石があり、私はそのページをキャッシュしています。問題は、パスが/ reviews = page = 2のようなものであればキャッシングは機能しません。代わりに、/ reviews/2 /にページングするときのパスが必要なので、この作品を作る。
match 'reviews(/:page)' => 'reviews#index', :constraints => { :page => /[0-9]/ }
なぜ制約がありますか?私の 'Show'リソースルートは、上記の行(数値制約なし)が「Show」ルートを妨害する「キャッチオール」に終わっているため動作しないためです。ショーアクションのIDは常に単語になるので、インデックスのページ区切りページには常に数字が表示されますが、これが私がこのようにした理由です。
しかし、ここでは、「ショー」ルートを単に「レビュー/マトリックス」にすることは望ましくありません。すべてのレビューはレビュー対象のタイプ別に分類されていますので、実際には 'ショー'のパスを 'レビュー/ムービー/マトリックス'や 'レビュー/書籍/ロードオブザリング。
「レビュー/書籍」などのカテゴリインデックスページを追加する場合は、元のレビューの「表示」パスを使用します。 (上記の制約のもう一つの理由)しかし、私はこの質問をあまりにも複雑にしたくないので、別のSOの質問のためにそれを保存しようとしています。
これまでの質問に戻る。通常、私は上記のネストされたコメントがレビューリソースにあることを除いて、単純な 'マッチ'ルート(ルートグロビングを使用していますか?)で上記を解決できると思います。コメントのネストされたリソースをレビューに残しながら、上記のような 'ショー'ページを作成するにはどうすればよいですか?