Rails 4 wicked_pdf 从模型生成时生成空白 pdf

Rails 4 wicked_pdf generate blank pdf while generating from model

我正在尝试使用 rails 模型在服务器上保存 pdf,但它生成了一个空白 pdf。早些时候在控制器中没有问题,但现在它创建了一个空白。知道我做错了什么吗?

def generate_bulk_pdf
  view = ActionView::Base.new(ActionController::Base.view_paths, {})
  view.extend(ApplicationHelper)
  view.extend(AbstractController::Rendering)
  view.extend(Rails.application.routes.url_helpers)
  students = Student.all.order('id ASC')
    students.each do | aStudent |
    pdf = WickedPdf.new.pdf_from_string(
       view.render_to_string(
         :template => "#{Rails.root.join('templates/challen.pdf.erb')}",
         :locals => { '@student' => aStudent }
       )
    )
    save_path = Rails.root.join('pdfs','filename.pdf')
    File.open(save_path, 'wb') do |file|
      file << pdf
    end
  end
end

知道我做错了什么吗?我找不到任何解决方案

一个好的测试是在您的模板中放置一行简单的文本,然后查看您是否获得包含该行的 PDF。去掉所有东西,这样你就可以生成一个没有本地人的 PDF,只有那 1 个字符串,让我知道。

这是我的设置方式,它工作正常,它可能会点击某些东西:)

 def generate_pdf_voucher(voucher, dir_name)
    view = ActionView::Base.new(Rails.root.join('app/views'))
    view.class.include ApplicationHelper
    view.class.include Rails.application.routes.url_helpers

    pdf = view.render :pdf => a_name,
                      :template => 'layouts/pdfs/voucher_pdf',
                      :layout => 'layouts/pdfs/pdf.html.erb',
                      :header => {:right => '[page] of [topage]'},
                      :locals => {:@voucher => voucher}
    # then save to a file
    pdf = WickedPdf.new.pdf_from_string(pdf)

    save_path = Rails.root.join('public', 'pdfs', dir_name, "#{voucher[:user].id.to_s}.pdf")
    File.open(save_path, 'wb') do |file|
      file << pdf
    end
end

pdf.html.erb是PDF的结构 voucher_pdf 都是动态的东西

如果这没有帮助,请发表评论,我会删除它。