2013-02-11 36 views
11

我在使用Rails方法問題:send_data軌不會SEND_DATA作爲文件

這裏是我的行動:

def export 
    send_data(current_user.contacts.to_csv, 
    type: 'text/csv; charset=utf-8; header=present', 
    disposition: 'attachment; filename=contacts.csv' 
) 
end 

這不會對PROMT下載,它只是呈現的結果屏幕。我試過powthin服務器。

我搞不​​清楚我在做什麼錯了?

我使用rails 4.0.0.beta

編輯:

捲曲頭:

< HTTP/1.1 200 OK 
< X-Frame-Options: SAMEORIGIN 
< X-XSS-Protection: 1; mode=block 
< X-Content-Type-Options: nosniff 
< X-UA-Compatible: chrome=1 
< X-XHR-Current-Location: /contacts/export 
< Content-Disposition: attachment; filename=contacts.csv 
< Content-Transfer-Encoding: binary 
< Content-Type: text/csv; charset=utf-8; header=present 
< Cache-Control: private 
< ETag: "48d3d8bd1c8d25cafb82ab705e4875ab" 
< Set-Cookie: request_method=GET; path=/ 
< X-Request-Id: c2588883-f3f9-4f68-8a8c-0de758c47288 
< X-Runtime: 0.185206 
< Connection: close 
< Server: thin 1.5.0 codename Knife 
+0

你可以張貼'捲曲-v HTTP的結果://本地主機:3000/whateveryourrouteis'?我敢打賭,它沒有正確設置內容類型。 – stef 2013-02-11 20:32:14

+0

現在我添加了CURL標頭 – sandelius 2013-02-12 07:09:44

+0

這可能是瀏覽器特定的。你在測試什麼瀏覽器? – bdares 2013-02-12 07:14:51

回答

10

我想通了。

這是turbolinks搞亂了一切。我將data-no-turbolink添加到導出鏈接,現在它按預期工作。

+0

+1:將此添加到我的turbolinks陷阱列表中 – bdares 2013-02-12 07:20:25

+1

但是,我遇到了這個問題,但沒有使用turbolink。我有遙控器:真正的設置在我的link_to。刪除遙控器:真正解決了這個問題。 – cgat 2013-06-13 21:53:31

2

send_data有一個選項哈希,這樣的類型,配置和文件名需要在哈希進行設置:

def export 
    send_data(current_user.contacts.to_csv, 
    type: 'text/csv', disposition: 'attachment', filename: 'contacts.csv') 
end 
+0

我正在傳遞一個散列作爲第二個參數。我也嘗試過你的方式,但它只是在屏幕上呈現內容。 – sandelius 2013-02-11 19:27:21