Ruby on Rails、コントローラーにリダイレクトせずに別のページをレンダリングさせる方法は?
概要
次のページがあるとします。 クリップ/ショー/111 画像/ショー/222 サウンド/ショー/333 ここで、111,222 と 333 はさまざまな投稿の ID です。
IDを検出して適切なコントローラーにリダイレクトする「show」という新しいコントローラーを開発しました。 show/show/111 は、clip/show/111 などにリダイレクトされます。
私が望むのは、リダイレクトせずにページ Clip/show/111 をレンダリングすることです。つまり、ブラウザ上の URL には「show/show/111」と表示されますが、実際には「clip/show/111」がレンダリングされます。
どうすればそんなことができるでしょうか?
皆さんありがとう ワエル
解決策
実際にやろうとしているのは、ルートの一部にエイリアスを作成して、異なる URL 構造から同じ機能にアクセスできるようにすることのようです。その場合、すべての作業を別のコントローラーに委任するコントローラー全体を作成することは、コード臭 (機能羨望) になります。
おそらくあなたがやりたいことは、単に同じ Clip コントローラを再利用する “show/” の追加のルートを定義することです。これは、次の操作を行うだけで実現できます。
# routes.rb
# ...
# For Rails 2
map.resources "show", :controller => "clip"
# For Rails 3
resources "show", :controller => "clip"