我有一个 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 对象。如何从该 block 内部访问报表对象的变量和方法?
最佳答案
通常的 JavaScript 技巧应该起作用:
def pdf_output
report = self
Prawn::Document.new do
text "Start date: #{report.start_date.strftime('%e %b %Y').squish}"
end
end
只需获取对您需要的 self
的引用,这样您就不必担心 Prawn 在您的 block 中对 self
做了什么。
关于ruby-on-rails - 如何将当前模型保留在我的方法范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12889857/