2

これはおそらく非常に簡単です。Spreadsheetgemを使用してワークブック(つまりスプレッドシート)を作成してい、最初にファイルに書き込むことなく、Excelデータをクライアントに直接送信したいだけです。

現在、ブックをtmpdir内のファイルに書き込んでから、を使用して送信していますが、送信後send_fileにファイルが必要ないため(キャッシュ目的でも)、非常にエレガントではないようです。

send_data最適には、ワークブックのデータを1つのrespond_to :xlsブロックにまとめて呼び出したいと思います。

何か案は?

4

1 に答える 1

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
于 2012-05-31T17:19:29.677 に答える