这可能非常简单:我正在使用Spreadsheet gem创建工作簿(即电子表格),只想将Excel数据直接发送到客户端而无需先写入文件。
现在,我正在将工作簿写入tmp
目录中的文件,然后使用send_file
发送,但这似乎非常不优雅,因为我不需要文件一旦它已发送(甚至不用于缓存目的)。
最理想的情况是,我只想使用send_data
块中的工作簿数据调用respond_to :xls
。
有什么想法吗?
答案 0 :(得分:2)
工作簿的write
方法接受任何路径或IO对象,因此不是传递文件或文件路径,而是传递给它一个StringIO。
require 'stringio'
class MyController < ApplicationController
def someaction
...
buffer = StringIO.new
book.write(buffer)
buffer.rewind
send_data buffer.read
end
end