Трудность с send_data в Ruby on Rails в сочетании с плагином электронной таблицы

У меня есть функция в контроллере, который берет в некоторых спецификациях и генерирует отчет о них. Эта функция user_report вызвана в представлении:

<% = submit_to_remote 'кнопка отправки', "Отчет экспорта Excel": URL => {: контроллер =>: отчеты: действие =>: user_report: print_state => 'печать'} %>

В reports_controller я использую плагин электронной таблицы для генерации файла Excel в функции user_report. Я хочу использовать send_data для потоковой передачи файла пользователю, не создавая его на сервере сначала. Исследование я сделал шоу, что использование StringIO является способом пойти, как показано ниже. Разочаровывающе, ничего не происходит, когда я называю send_data. Плагин, кажется, работает, хорошо создавая файл и сохраняя его на сервере, но ничего не делает, когда я использую send_file, предполагая, что проблема не заключается в плагине. Но затем что я делаю неправильно с send_file/send_data?

Сама функция похожа на это:

определение user_report

if request.post?
  unless params[:reports][:userid].blank?
    @userid=params[:reports][:userid]
  end
  if params[:print_state]=='print'  

    report = Spreadsheet::Workbook.new
    info = report.create_worksheet :name => 'User Information'
    info.row(1).push 'User ID', @userid

    @outfile = "Report_for_#{@userid}.xls"

    require 'stringio'
    data = StringIO.new ''
    report.write data
    send_data data.string, :type=>"application/excel", :disposition=>'attachment', :filename => @outfile
  end

  respond_to do |format|
    format.js { }
  end
end

конец

Файл журнала читает 18.10.2010 14:13:59 ИНФОРМАЦИИ - Передающие данные Report_for_jjohnson.xls, но никакая загрузка не начинается в браузере. Я имею, преуспевают в том, чтобы использовать send_data на этом приложении прежде, которое сбивает с толку.

Я использую направляющие v2.3, Ruby v1.8.7 и электронная таблица v6.4.1 по spreadsheet.rubyforge.org.

7
задан Chris K 18 October 2010 в 20:01
поделиться