2012-05-31 1 views
2

이것은 매우 간단합니다. Spreadsheet gem을 사용하여 통합 문서 (예 : 스프레드 시트)를 만들고 파일에 먼저 작성하지 않고 Excel 데이터를 클라이언트에 직접 보내려는 경우입니다.Rails, Spreadsheet gem : 스프레드 시트 데이터를 클라이언트에 직접 출력하는 방법은 무엇입니까?

는 지금, 나는 tmp 디렉토리에 파일로 통합 문서를 쓰고, 다음 send_file를 사용하여 전송하지만,이조차 캐싱 (전송 된 된 후에는 내가 파일을 필요로하지 않는 것을 몹시 우아 보인다 목적).

respond_to :xls 블록의 통합 문서 데이터로 send_data을 호출하는 것이 가장 좋습니다.

아이디어가 있으십니까?

답변

1

통합 문서의 write 방법은 어떤 경로 또는 IO의 오브젝트를, 그래서 대신에게 파일이나 파일 경로를 전달하는 당신은 StringIO를 전달할 수,

require 'stringio' 
class MyController < ApplicationController 
    def someaction 
    ... 
    buffer = StringIO.new 
    book.write(buffer) 
    buffer.rewind 
    send_data buffer.read 
    end 
end 
+0

아의 라인을 따라 뭔가 물론 -. 감사합니다 ! 아마도 그게 뭔가 간단 할 거라 생각 했어. – Flambino