csvをダウンロードさせたくて、コントローラーにこう書いた。

def index
  @users = User.all
  stream = render_to_string(template: "user/index.csv.erb")

  respond_to do |format|
    format.html
    format.csv { send_data stream.encode(Encoding::SJIS) }
  end
end

render_to_stringを使っているのは、文字コードをsjisにしたいため。

もしこの時にview内でエラーがあった場合、Missing templateエラーになる。

ハマって試行錯誤したのでメモ。