レスポンスのフォーマットを変更
リクエストの種類に応じて、レスポンスのフォーマットを変更するには以下のように記述。
# 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ドキュメント