我在rails控制器中有一个块,如下所示:
CSV.generate do |csv|
csv << ["Name", "Other Field"]
csv << [@app.name, @app.other_field]
send_data csv, filename: 'test.csv'
end
但是下载文件的内容就是这样:
#<CSV:0x007fe518414bc8>
我做错了什么?
答案 0 :(得分:3)
CSV.generate
返回生成的CSV字符串,例如:
str = CSV.generate { |csv| csv << %w[a b c]; csv << [1,2,3] }
puts str
给你:
a,b,c
1,2,3
作为输出。
您正在将CSV
实例传递给send_data
,它正试图将该CSV
实例转换为字符串,显然是在其上调用to_s
。< / p>
你想说更像这样的事情:
csv_string = CSV.generate do |csv|
csv << ["Name", "Other Field"]
csv << [@app.name, @app.other_field]
end
send_data csv_string, filename: 'test.csv'