send_fileが呼び出されると、それがブラウザにファイルを送信していますが、ブラウザが新しいページにプレーンテキストとして内容をダンプの代わりにダウンロードしていますファイル。そのページを更新すると、通常どおりファイルがダウンロードされます。Railsの
ルート
get 'download' => 'qr_codes#download'
コントローラ
def download
path = Rails.root.join("events/active/#{params[:name]}/#{params[:batch]}/#{params[:file]}")
send_file(path, type: 'application/vnd.ms-excel', filename: params[:file])
end
ビュー
<%= link_to 'Original Upload', download_path(name: @event_name,
batch: batch, file: batch_upload_filename(@event_name, batch)) %>
解決策: これはターボリンクでknown issueになりました。私は同じようTurbolinks 5を使用している場合、更新構文は次のとおりです。data: { turbolinks: false }
として
と更新リンク処分を '添付ファイル' にデフォルト設定されています。とにかくそれを設定しようとしたが、同じ結果が発生しました。私はまたあなたの提案ごとにファイル拡張子が正しいことを保証し、同じ結果を得ました。 –
ここに直接行くと、http:// localhost:3000/download?batch = 1&file = HSS.xls&name = HSS + 2016 "という名前のページが表示されます。プレーンテキストをブラウザーに入れて、ポストで言及したように、プレーンテキストページをリフレッシュして、ファイルを通常どおりダウンロードします。 –
上記の私の投稿を編集して、問題を解決しました。 –