Mat*_*ham 4 ruby csv streaming ruby-on-rails ruby-on-rails-3
我迫切希望在我的Rails 3.2.2应用程序中获得流式CSV下载.
我已经尝试了'csv_builder'宝石(https://github.com/dasil003/csv_builder),它宣传支持这个功能,但似乎Rails 3.2中有一些变化使它无法工作(它产生了一个应用启动时出现"未初始化的常量ActionView :: Template :: Handler"错误.
还有其他想法或解决方案吗?谢谢!
编辑:为了澄清,我需要将模型的所有条目导出为CSV文件.有很多行,它是超时的...因此需要流式传输.我过去曾使用过逗号宝石(https://github.com/crafterm/comma),但此刻它也不支持流式传输.
好的,经过一番研究后,我在控制器中将以下内容整合在一起.如果response_body给出一些可枚举的东西(这是一个单词?),它会流.此外,服务器需要能够流(我在Heroku上使用Unicorn).我非常想在控制器中没有所有这些东西,所以我的下一步是以某种方式提取它.
format.csv {
@entries = Entry.all
@columns = ["First Name", "Last Name"].to_csv
@filename = "entries-#{Date.today.to_s(:db)}"
self.response.headers["Content-Type"] ||= 'text/csv'
self.response.headers["Content-Disposition"] = "attachment; filename=#{@filename}"
self.response.headers["Content-Transfer-Encoding"] = "binary"
self.response_body = Enumerator.new do |y|
@entries.each_with_index do |entry, i|
if i == 0
y << @columns
end
y << [entry.first_name, entry.last_name].to_csv
end
end
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4458 次 |
| 最近记录: |