當send_file被調用時,它將文件發送到瀏覽器,但瀏覽器將內容作爲純文本轉儲到新頁面上,而不是下載文件。如果我刷新該頁面,則會正常下載文件。Rails將send_file呈現文件作爲純文本在新頁面上而不是瀏覽器下載文件
路線
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。如果使用Turbolinks 5像我,更新的語法是:data: { turbolinks: false }
處置默認爲 '附件' 更新鏈接。我試圖設置它,並且遇到了相同的結果。我也確保文件擴展名是根據您的建議正確的,並得到相同的結果。 –
如果我直接去這裏,它只會下載罰款'「http:// localhost:3000/download?batch = 1&file = HSS.xls&name = HSS + 2016」',只有當我從不同頁面鏈接到此路徑時,在瀏覽器中顯示純文本,然後像我在文章中提到的那樣,刷新純文本頁面,然後將該文件正常下載。 –
編輯我的帖子上面,我解決了這個問題。 –