render_to_stringメソッドとBuilderを使ってXML文字列を生成する方法

メモ
Builderを使ってXMLのレスポンスを生成するには以下のようにrespond_to()を使うのだが・・・

# ビュー(show.xml.builder)
xml.diary do
  xml.title @diary.title
end
# Diariesコントローラ
def show
  @diary = Diary.find(params[:id])
  respond_to do |format|
    format.xml
  end
end

レスポンスではなく文字列としてXMLを取得したい時は次のようにするとできる。

# Diariesコントローラ
def show
  @diary = Diary.find(params[:id])
  xml = render_to_string(:template => 'diaries/show.xml.builder',  :layout => false)
  # 何かの処理が続く
end