2012-10-15 65 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

相關問題