2011-08-03 43 views
9

Tôi chỉ không thể lấy ví dụ 'To a String' trong 'Writing' example in the documentation để hoạt động.Ruby 1.9.2 xuất chuỗi CSV mà không cần tạo tệp

ruby ​​-v trả: ruby ​​1.9.2p290 (2011/07/09 sửa đổi 32.553) [x86_64-darwin10.8.0]

Các ví dụ từ các tài liệu tôi không thể làm việc là ở đây:

csv_string = CSV.generate do |csv| 
    csv << ["row", "of", "CSV", "data"] 
    csv << ["another", "row"] 
end 

các lỗi tôi nhận được là:

wrong number of arguments (0 for 1) 

Vì vậy, nó có vẻ như tôi đang thiếu một cuộc tranh cãi, trong tài liệu here nó khẳng định:

This method wraps a String you provide, or an empty default String 

Nhưng khi tôi vượt qua trong một chuỗi rỗng, nó mang lại cho tôi những lỗi sau:

No such file or directory - 

tôi không tìm cách để tạo ra một tập tin csv, tôi chỉ muốn tạo ra một chuỗi các csv rằng Tôi gửi dưới dạng văn bản cho người dùng.

+0

Bạn có đặt => require 'csv' <= trước khi gọi phương pháp của bạn? –

Trả lời

21

Dưới đây là đoạn code tôi biết công trình chống lại Ruby 1.9.2 với Rails 3.0.1

def export_csv(filename, header, rows) 
    require 'csv' 

    file = CSV.generate do |csv| 
     csv << header if not header.blank? 
     rows.map {|row| csv << row} 
    end 

    send_data file, :type => 'text/csv; charset=iso-8859-1; header=present', :disposition => "attachment;filename=#{filename}.csv" 
end 
+7

OK Tôi thừa nhận rằng tôi thực sự yêu stackoverflow ... –

+0

Tôi đã gặp lỗi khi sử dụng 'blank? 'Trước đây, vì vậy tôi sử dụng' empty?'. –

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