使用Prawn PDF和Resque在后台生成pdf

时间:2015-04-30 01:40:47

标签: ruby backgroundworker resque prawn

我正在尝试使用Prawn PDF和Resque

为后台工作人员生成PDF

没有后台工作人员的代码是:

def document
    respond_to do |format|
        format.pdf do
            pdf = ReservationPdf.new(params[:reservation_ids])
            send_data pdf.render, filename: 'reservations.pdf', type: 'application/pdf', disposition: 'inline', compress: true
        end
    end
end

我尝试将以下行移至app / jobs /中的pdf.rb,以便Resque处理

pdf = ReservationPdf.new(params[:reservation_ids])
send_data pdf.render, filename: 'reservations.pdf', type: 'application/pdf', disposition: 'inline', compress: true

这似乎无法正常工作 - 我得到了未定义的方法" send_data"'

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

如果我没错,你的document方法就是控制器动作,对吧?所以它属于一个控制器。

当您调用某个操作时,应该向请求者返回一些内容,在这种情况下是send_data

如果您尝试在后台生成pdf,那么您应该更改响应,可能会更改head :ok或只是告诉用户等待pdf的视图。

下一步是在后台生成pdf,您可以使用此帖子作为示例:generating pdf using prawn in background with resque

然后你需要告知用户pdf准备就绪,一个选项是发送电子邮件,其他选项是刷新页面直到pdf出现,其他选项是服务器向浏览器发送通知以获取pdf