4

我有一个 Rails 模型,在其中一种方法中,我使用 prawn 生成 pdf,如下所示;

class Report < ActiveRecord::Base

  def pdf_output
    Prawn::Document.new do
      text "Start date: #{start_date.strftime('%e %b %Y').squish}"
    end
  end

end

在那个文本方法中,我试图输出我的报告模型的 start_date 属性。相反,我收到以下错误

NoMethodError in ReportsController#show

undefined method `start_date' for #<Prawn::Document:0x007fdafbce6930>

所以我的 start_date 方法是指我的 Document 对象而不是我的 Report 对象。如何从这个块中访问我的报表对象的变量和方法?

4

1 回答 1

5

通常的 JavaScript 技巧应该可以工作:

def pdf_output
  report = self
  Prawn::Document.new do
    text "Start date: #{report.start_date.strftime('%e %b %Y').squish}"
  end
end

只需获取self您需要的参考,这样您就不必担心 Prawnself在您的块内做什么。

于 2012-10-15T05:52:09.890 回答