Wicked_pdf在从对象调用时呈现不同的PDF

时间:2014-08-29 06:30:16

标签: ruby-on-rails wicked-pdf

在控制器中,我有一个带有show块的respond_to方法,可以创建一个wicked_pdf的PDF,如下所示:

class TimesheetsController < ApplicationController
  def show
    ...

    respond_to do |format|
      format.html
      format.pdf do
        render pdf: "pdf",
          template:          'timesheets/show.pdf.haml',
          print_media_type:  true,
          orientation:       'Portrait',
          page_size:         'A4',
          disposition:       'attachment'
      end
    end

    ...
  end
end

这很好用,但是我想用delayed_job将它移到后台作业。我已经设置delayed_job,它运行正常。现在我想使用PdfJob对象来创建PDF,因此它也可以作为单独的后台作业完成。所以新的respond_to块看起来像这样:

 respond_to do |format|
   format.html
   format.pdf do
     PdfJob.new.create_timesheet(@timesheet)
   end
 end

PdfJob看起来像这样:

class PdfJob

  def initialize
  end

  def create_timesheet(timesheet)
    av = ActionView::Base.new()
    av.view_paths = ActionController::Base.view_paths
    av.extend ApplicationHelper
    av.render pdf: "Timesheet #{timesheet.user.full_name} #{I18n.t("date.month_names")[timesheet.month]} #{timesheet.year}",
           template:          'timesheets/show.pdf.haml',
           print_media_type:  true,
           orientation:       'Portrait',
           page_size:         'A4',
           disposition:       'attachment'
  end

end

它正在调用ActionView::BaseActionController::Base以便能够从对象渲染视图。 PDF的实际渲染没有改变。但是,当我尝试创建PDF时,PDF是内联创建的而不是附件,并且它是完全空的。这可能是什么原因?我忘了什么吗?

0 个答案:

没有答案