memo: Railsで、とあるRSSを生成した際のbuilder
「:」付き要素を生成したり、キャッシュを使ったり、アレコレ調べて苦労したので、自分用メモとして残しておく。
# feed.rss.builder xml.instruct! xml.rss version: "2.0", "xmlns:dc" => "http://purl.org/dc/elements/1.1/" do xml.channel do xml.title @site_title xml.description @site_description xml.link @site_url @entries.each do |entry| xml.item do xml.title entry.title xml.description entry.description xml.pubDate entry.created_at.to_s(:rfc822) xml.link entry.url xml.guid entry.url xml.tag!("foo:bar", url: entry_image_url(entry)) xml.tag!("john:smith") do cache({ controller: "foo", action: "bar", part: "rss", id: entry.id }, expires_in: 1.hour) do xml.cdata! render partial: "cdata", formats: "html", locals: { foo: "bar" } end end end end end end
ポイント
- コロン付要素使いたければ、xml.tag! を使えばいい。
- ブロックにすればキャッシュ使える。(他の方法もあるかも)
- partial を render することもできる。