2012-10-15 30 views
4

我有一个Rails模型,并且使用这种方法生成一个使用大虾的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> 

所以我的方法起始日期指的是我的文档对象,而不是我的报告对象。我如何从这个块中访问我的报表对象的变量和方法?

回答

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您块内的self的参考。

+0

我打算回答这个问题,但是我有一种偷偷的感觉,那就是我在混合Ruby的'self'和Javascript的'this' ...这两个在某些方面非常相似,而在其他方面则非常不同。我猜想大不相同。 –

+0

亩再次救援。谢谢。 – brad

相关问题