ric*_*ick 5 ruby-on-rails prawn resque
我正在尝试通过 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
Run Code Online (Sandbox Code Playgroud)
该create_pdf
方法来自DocumentHelper
但我收到此错误:
undefined method `create_pdf'
Run Code Online (Sandbox Code Playgroud)
有人知道怎么做吗?
create_pdf
您正尝试从类方法( ) 调用实例方法( self.perform
)。DocumentHelper
仅当您定义create_pdf
为类方法时,您的代码才有效:
def self.create_pdf
Run Code Online (Sandbox Code Playgroud)
如果您不需要create_pdf
在视图中访问,您可以考虑将其Document
作为实例方法移动到您的类中,然后您可以执行@doc.create_pdf(pdf)
.
create_pdf
但是,如果您还需要在视图中访问,您可以将其放入文件module_function :create_pdf
中DocumentHelper
,也可以在工作线程中动态添加:
DocumentHelper.module_eval do
module_function(:create_pdf)
end
DocumentHelper.create_pdf(pdf)
Run Code Online (Sandbox Code Playgroud)
然后就可以正常调用了DocumentHelper.create_pdf
。
另外,在 Rails 3 中,我认为您只需要include DocumentHelper
, 而不是include ActionView::Helpers::DocumentHelper
.
归档时间: |
|
查看次数: |
1106 次 |
最近记录: |