気軽に楽しくプログラムと遊ぶ

自分が興味があってためになるかもって思う情報を提供しています。

Rails レンダリング結果をファイル出力する

レスポンスのフォーマットを変更

リクエストの種類に応じて、レスポンスのフォーマットを変更するには以下のように記述。

# app/controllers/products_controller.rb

# 下記のリクエストに応じて、それぞれの形式でレスポンスを返す
# GET /products/1
# GET /products/1.json
# GET /products/1.xml
# GET /products/1.yaml
def show
  @product = Product.find(params[:id)

  respond_to do |format|
    format.html # show.html.erb(アクション名.出力形式.拡張子)
    format.json { render json: @product } # JSON形式
    format.xml  { render xml:  @product } # XML形式
    format.yaml { render text: @product.to_yaml } # YAML形式
  end
end

レンダリング結果をファイル出力する

send_data:動的に生成されたデータを出力する
render_to_string:表示結果を文字列として取得する

respond_to do |format|
   format.html { send_data render_to_string, filename: filename, charset=shift_jis" }
end

参考URL

よく忘れるRailsのコントローラーでのrenderメソッドのレシピ集 - Rails Webook
send_data - リファレンス - - Railsドキュメント
render_to_string - リファレンス - - Railsドキュメント