例えばブログサイトやサイトのニュース関連等、何かしら定期的に更新される内容をRSSで
配信したいと思った場合の方法を紹介。
まぁただ実際のRSS出力の部分については各所で取り扱われているので、うまくいかなかったりして詰まったあたりと純粋な手順を中心に紹介。他所の例の通りにやってるのにうまくいかないという人は参考になるかも。
例ではxxxxコントローラーのindexをRSSフィード元とする。
まず、ControllerのIndexを編集。
処理
respond_to do |format|
format.html # index.html.erb
format.rss { render :layout => false }
end
end
を追加。
どうもRails2.0以降ならこれはやらなくてもいいようなのだが、コントローラーがLayoutを使用している場合、それがRSSにも反映されてしまうので、
それを防ぐために上記処理を追加する。どうしても書きたくない場合は、
等でそのアクションのレイアウトしようをとめることができるが、HTMLでのレイアウトも使えなくなってしまうので専用のアクションを作る必要がある。
そしてViewの中にindex.rss.builderを作成。
実際のBuilderの中身については各所で色々ちゃんとしたものがあるので今回は割愛。
さて、できたRSSフィードにアクセスしてみようとすると
No route matches "/index.rss"
def index
と出てしまう。もうなにがわるいやら。
ちなみに、index.html.erbには問題なくアクセスできることは確認。
サーバーの再起動等も行ってみたが改善せず。
どうもフォーマットの部分がうまく伝わっていないようだということまでは分かるが、どう直せばいいのかわからなかった。
で、最終的にはRoutes.rbで
とすることでごまかした。
なんとなく
map.connect
をうまくすれば何とかなりそうなのだが。
参考リンク
http://rubyist.g.hatena.ne.jp/rochefort/20090120
http://railscasts.com/episodes/87-generating-rss-feeds
http://rubist.blog77.fc2.com/blog-entry-64.html