2016-11-10 53 views
1

在控制器中,我有:軌SEND_DATA只能「內聯」不下載

send_data(data, filename: "payment_file") 

在我的觀點:

<%= link_to 'Download File', bank_file_download_path(@bank_file_job), 
    data: {no_turbolink: true}, class: "btn btn-primary btn-lg btn-block" %> 

但它總是顯示文件內嵌的內容。有人可以幫我嗎?

回答

0

根據該文件,如果你希望它是下載,然後你需要設置:disposition下載

send_data data, filename: "payment_file", disposition: 'download' 

http://apidock.com/rails/ActionController/DataStreaming/send_data

+0

謝謝你的回答@Taryn。但是「處置:附件」是默認的,所以你通常不需要指定它。如果你說「處置:內聯」,那麼它會在瀏覽器中顯示內容。但是如果你對處置沒有提及,那麼它默認爲附件,這意味着下載應該可以工作。所以這不是在這種情況下的問題 – coffeecoder

+0

很高興聽到你找到真正的解決方案。通過明確的方式檢查任何默認值通常是值得的...有時你會發現其他地方的魔法已經改變了你的默認值。 –

5

我想通了這一點。正如another answer中已經指出的那樣,turbolinks需要被禁用。但是該答案中的建議解決方案無法正常工作,因爲在特定頁面上禁用它的語法已從turbolinks 5.0開始改變。它現在應該是這樣的。

<%= link_to 'Download File', file_download_path , data: {turbolinks: false} %> 
+0

很棒的回答。升級到Rails 5.0可能會非常棘手......處置::attachment,x_sendfile:true或者沒有turbolinks:false的情況下將send_file的設置類型設置爲'csv'將不起作用。 –