2013-02-11 18 views
11

tôi đang gặp vấn đề với phương pháp Rails: send_dataray sẽ không send_data như tập tin

Dưới đây là hành động của tôi:

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

này sẽ không Promt cho một tải về, nó chỉ làm cho kết quả trên màn. Tôi đã thử cả hai máy chủ powthin.

Tôi không thể hiểu được mình đang làm gì sai?

Tôi đang sử dụng rails 4.0.0.beta

EDIT:

tiêu đề CURL:

< 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

bạn có thể đăng các kết quả của 'cuộn tròn -v http: // localhost: 3000/whateveryourrouteis'? Tôi đặt cược nó không đặt đúng loại nội dung. – stef

+0

Bây giờ tôi đã thêm tiêu đề CURL – sandelius

+0

Đây có thể là trình duyệt cụ thể. Bạn đang thử nghiệm trình duyệt nào? – bdares

Trả lời

10

Tôi đã tìm ra.

Đó là turbolinks đã làm rối tung tất cả. Tôi đã thêm dữ liệu-no-turbolink vào liên kết xuất và bây giờ nó hoạt động như mong đợi.

+0

+1: thêm vào danh sách turbolinks gotchas của tôi – bdares

+1

Tôi cũng gặp vấn đề này, tuy nhiên, không có turbolinks. Tôi đã có từ xa: true thiết lập trong link_to của tôi. Xóa từ xa: đúng đã khắc phục sự cố. – cgat

2

send_data có một tùy chọn băm, vì vậy loại, bố trí và tên tập tin cần phải được đặt trong một hash:

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

Tôi chuyển một giá trị băm làm đối số thứ hai. Tôi cũng đã thử theo cách của bạn nhưng nó chỉ hiển thị nội dung trên màn hình. – sandelius

10

Câu trả lời ở đây là dành cho cổ điển turbolinks. Có một ký hiệu mới trên các phiên bản mới hơn của turbolinks:

<a href="/" data-turbolinks="false">Disabled</a> 

https://github.com/turbolinks/turbolinks#disabling-turbolinks-on-specific-links

+0

Người đàn ông tuyệt vời, nó làm việc cho tôi, tôi đã sử dụng phiên bản mới hơn của các liên kết turbo. \ m/ – Aamir

+0

Điều này vẫn tuyệt vời. –

Các vấn đề liên quan