加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在resque中使用prawn生成pdf

发布时间:2020-12-17 02:11:23 所属栏目:百科 来源:网络整理
导读:我正在尝试通过Resque后台作业在后台创建PDF文档. 我创建PDF的代码是在Rails帮助器方法中,我想在Resque工作器中使用,如: class DocumentCreator @queue = :document_creator_queue require "prawn" def self.perform(id) @doc = Document.find(id) Prawn::D
我正在尝试通过Resque后台作业在后台创建PDF文档.

我创建PDF的代码是在Rails帮助器方法中,我想在Resque工作器中使用,如:

class DocumentCreator
  @queue = :document_creator_queue
  require "prawn"

  def self.perform(id)
    @doc = Document.find(id)

    Prawn::Document.generate('test.pdf') do |pdf|
      include ActionView::Helpers::DocumentHelper
      create_pdf(pdf)
    end
  end
end

create_pdf方法来自DocumentHelper但我收到此错误:

undefined method `create_pdf'

有人知道怎么做吗?

解决方法

您正尝试从类方法(self.perform)调用实例方法(create_pdf).只有当DocumentHelper将create_pdf定义为类方法时,您的代码才有效:

def self.create_pdf

如果您不需要在视图中访问create_pdf,则可以考虑将其作为实例方法移动到Document类,然后可以执行@ doc.create_pdf(pdf).

但是,如果您还需要在视图中访问create_pdf,则可以在您的DocumentHelper文件中放置module_function:create_pdf,也可以在您的worker中动态添加:

DocumentHelper.module_eval do
  module_function(:create_pdf)
end
DocumentHelper.create_pdf(pdf)

然后,您可以正确调用DocumentHelper.create_pdf.

另外,在Rails 3中,我认为你只需要包含DocumentHelper,而不是包含ActionView :: Helpers :: DocumentHelper.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读