ホーム > タグ > feed
feed
Railsアプリでfeedの配信
- 2009年1月11日 11:57 AM
- RoR
Atomフォーマットを追加
RailsにはAtomフィードの配信をサポートしてくれる機能がある。scaffoldを実行すると「respond_to」から始まるブロックが生成される。ここでマルチフォーマット対応を設定する。
マルチフォーマット機能は、同じアクションにアクセスした場合でもクライアントのリクエストに応じてHTMLやXML、JSON等、フォーマットを変えてレスポンスを返すことが出来る機能。
scaffoldでは、HTMLとXMLに対応した状態のものが生成される。
app/controller/entries_controller.rb を開いて「format.atom」を追加。
この場合はentriesという投稿記事一覧ページにこの機能を付けようとしている。
def index
@entries = Entry.find(:all)
respond_to do |format|
format.html # index.html.erb
format.xml { render
ml => @entries }
format.atom # ここにatomを追加した
end
end
これだけだとリクエストに応える準備が出来ただけでユーザが見える形で出力できないので、出力用の(XMLを出力する)テンプレートファイルを作成する。
app/views/entries/index.atom.builder という名前で以下の内容。
atom_feed do |feed|
feed.title("Blog Title") # サイトの名前
feed.updated((@entries.first.created_at))
for entry in@entries
feed.entry(entry) do |item|
item.title(entry.title) # 記事ごとのタイトル
item.content(entry.content, :type => 'html')
item.author do |author|
author.name("showjin") # 投稿者名
end
end
end
end
これで、localhost:3000/entries.atom にアクセスするとAtomフィードのXMLが表示されるようになった。
ホーム > タグ > feed
- 検索
- フィード