我正在尝试使用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"'
有谁知道如何解决这个问题?
答案 0 :(得分:4)
如果我没错,你的document
方法就是控制器动作,对吧?所以它属于一个控制器。
当您调用某个操作时,应该向请求者返回一些内容,在这种情况下是send_data
如果您尝试在后台生成pdf,那么您应该更改响应,可能会更改head :ok
或只是告诉用户等待pdf的视图。
下一步是在后台生成pdf,您可以使用此帖子作为示例:generating pdf using prawn in background with resque
然后你需要告知用户pdf准备就绪,一个选项是发送电子邮件,其他选项是刷新页面直到pdf出现,其他选项是服务器向浏览器发送通知以获取pdf