タイトルの通り、rails6.0以前ではsend_file
でファイルダウンロード機能を実装しているとIE, edgeの場合にファイル名が文字化けしてしまうので、明示的にエンコード処理をして対策を行う必要がありました。
rails6.0ではこの対応が不要になるコミットがされています。
rails6.0以前の場合
これだと、IE、edgeの場合にファイル名が文字化けしてしまいます。
data = "XXX"
filename = "サンプルファイル.txt"
send_data(data, filename: filename)
その為、以下の様に明示的にエンコードしてあげる必要がありました。
data = "XXX"
filename = "サンプルファイル.txt"
+ encorded_filename = ERB::Util.url_encode(filename)
- send_data(data, filename: filename)
+ send_data(data, filename: encorded_filename)
rails6.0では
詳細はPRに書いてありますが、上記のエンコード処理をrailsがしてくれる様になったので、
明示的にエンコード処理は不要になりました。
また、rails6.0以前のアプリの為にバックポートgemも用意されています。(PR内に書かれています。)
現在rails5系で動いていて、明示的にエンコードしているアプリでは
railsバージョンアップ後は不要な処理になるので忘れずに削除しましょう。