読者です 読者をやめる 読者になる 読者になる

send_fileとかでファイルをダウンロードさせるとcontent typeが変だ

Rails Ruby

applicationコントローラの中で、set_charsetフィルタを
定義している人は上書きされています。
名前は違っても、同じようなことをしている人は多いかと思います。

def set_charset
  headers['content-type']="text/html;charset-utf-8" unless request.xhr?
end

こんな感じのフィルタを定義しているかと思います。
これはAJAXではない場合はcontent-typeをtext/htmlにセットするという
内容です。そこで規定(社内のみ)をつくって、downloadから始まるアクションは
content typeを書き換えないようにしてみました。

def set_charset
  unless params[:action]=~/^download/ || request.xhr?
    headers['content-type']="text/html;charset-utf-8"
  end
end

こうすると、download_pdfとかいうアクションは
content typeが上書きされなくなっていい感じです。