例えばブログサイトやサイトのニュース関連等、何かしら定期的に更新される内容をRSSで
配信したいと思った場合の方法を紹介。

まぁただ実際のRSS出力の部分については各所で取り扱われているので、うまくいかなかったりして詰まったあたりと純粋な手順を中心に紹介。他所の例の通りにやってるのにうまくいかないという人は参考になるかも。

例ではxxxxコントローラーのindexをRSSフィード元とする。

まず、ControllerのIndexを編集。

def index
    処理
   
    respond_to do |format|
      format.html # index.html.erb
      format.rss  { render :layout => false }
    end
  end

を追加。
どうもRails2.0以降ならこれはやらなくてもいいようなのだが、コントローラーがLayoutを使用している場合、それがRSSにも反映されてしまうので、
それを防ぐために上記処理を追加する。どうしても書きたくない場合は、

layout "レイアウト名", :except => :アクション

等でそのアクションのレイアウトしようをとめることができるが、HTMLでのレイアウトも使えなくなってしまうので専用のアクションを作る必要がある。

そしてViewの中にindex.rss.builderを作成。
実際のBuilderの中身については各所で色々ちゃんとしたものがあるので今回は割愛。

さて、できたRSSフィードにアクセスしてみようとすると

class XxxxController <ApplicationController
 
No route matches "/index.rss"

def index

と出てしまう。もうなにがわるいやら。

ちなみに、index.html.erbには問題なくアクセスできることは確認。
サーバーの再起動等も行ってみたが改善せず。

どうもフォーマットの部分がうまく伝わっていないようだということまでは分かるが、どう直せばいいのかわからなかった。
で、最終的にはRoutes.rbで

map.rss 'index.rss', :controller => 'xxxx', :action => 'index', :format => 'rss'

とすることでごまかした。

なんとなく
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