render_to_stringを使った際にview内でエラーがあった時は、Missing templateエラーが発生する

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エラーになる。

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