1

我正在尝试扩展 Prawn::Document,但它为 # 提出了一个未定义的方法 `prawn_document'。

我的课看起来像这样:

require "open-uri"
require 'prawn'
require 'prawn/core'
require 'prawn/layout'

class M < Prawn::Document


  def initialize(options)
    options && options.merge!({:inline=>true})
    create_instance_variables(options.delete(:variables))
    super(options)
  end

  def render_template(template)
    pdf = self
    pdf.instance_eval do
      eval(template) #this evaluates the template with your variables
    end
    ensure_path
    pdf.render_file(File.join(output_path,filename))
  end

  private

  def create_instance_variables(vars)
    return if vars.blank?
    vars.each_pair do |k,v|
      instance_variable_set("@#{k}", v)
    end
  end

  def output_path
    @output_path ||= File.join(Rails.root,'tmp','documents')
  end

  def ensure_path
    FileUtils.mkdir_p(output_path)
  end

  def filename
    @output_file ||= "#{Process.pid}::#{Thread.current.object_id}.pdf"
  end

end

有人可以帮我解决这个问题吗?

非常感谢。

4

0 回答 0