[ノウハウ] Railsで外部から取得したhttp responseをそのまま表示する

Ruby on Railsで処理をPHPやDjangoで行わせ、結果だけをRailsで表示したいとき、http responseをそのまま表示させたくなる。
その際の対処法を紹介。


render plainを使う

以下のようにcontrollerの中でrender plainを使うと良い。
この場合viewは不要。
require 'uri'

class HogeController < ApplicationController

   def hoge
     uri = URI.parse("http://hogehoge.com")
     req = Net::HTTP::Get.new(uri.to_s)
     res = Net::HTTP.start(uri.host, uri.port) {|http|
       http.request(req)
     }

     # 取得した内容をそのまま表示
     render plain: res.body

   end
end

画像の場合は send_dataを使う

# 取得した画像を表示
send_data(res.body, type: "image/png", disposition: 'inline')