2012-03-26 5 views
2

somepath/:id(.:format)へのリクエストをsomecontroller#showにルーティングするルートがあります。特定のフォーマットのリクエストをRailsの別のコントローラにルーティングします

これは、どのような形式のリクエストでも使用できます。しかし、somepath/:id.pngが画像を返すべき条件が1つあり、そのコードはすでにothercontroller#showに実装されています。

コードを複製する代わりに、.png要求をothercontrollerにルーティングするのが最善であると考えました。

これを達成する方法は何ですか?
私は制約の使用を検討しましたが、正しいアプローチであるかどうかはわかりません。

答えて

3

私が見る唯一の方法は、somecontrollerに

match 'somepath/:id.png' => 'othercontroller#show' 
match 'somepath/:id(.format)' => 'somecontroller#show 

にこの意志ルート他のコントローラへのすべての.png要求、および他のすべてを使用することです。

はあなたが他の前にPNGルートを置くことを確認してください。

+1

これはかなりうまく動作し、 ':format =>:png'を追加するだけでした。このフォーマットを強制しないという落とし穴しかないので、実際に 'somepath/id.png.json'にアクセスできます。 – GeReV

0
match 'photos/:id' => 'photos#show', :defaults => { :format => 'gif' } 

Railsはphotos/12とPhotosControllerのshowアクションを一致させ、params [:format]を "jpg"に設定します。

よりinfo

関連する問題