2011-12-14 32 views
1

在控制器代码红宝石使用虾宝石生成PDF导轨应用使得在呈现一个错误:未定义的方法`文本”的零:NilClass

def download_report 
    @downloads = StatisticDownload.select("date(Date) as downloaded_date, count(id) as count").where("DownloadSuccess=?","1").group("date(Date)") 
    respond_to do |format| 
    format.pdf { @downloads } 
    end 
end 

创建视图

# download_report.pdf.prawn 
pdf.text "Download ##{@downloads.id}", :size => 30, :style => :bold 

downloads = @downloads.map do |downloads| 
    [ 
    downloads.file, 
    downloads.id 
    ] 
end 

但是../generate_report.pdf会产生一个错误: 当你没有想到它时,你有一个零对象! 您可能预期了Array的一个实例。 评估nil.map时发生错误

我已经安装了大虾0.12.0和prawnto。

回答

0

尝试删除整个respond_to块,这样你才会有:

def download_report 
    @downloads = StatisticDownload.select("date(Date) as downloaded_date, count(id) as count").where("DownloadSuccess=?","1").group("date(Date)") 
end 

另外,如果你真的需要respond_to代码块,不format.pdf后指定块:

def download_report 
    @downloads = StatisticDownload.select("date(Date) as downloaded_date, count(id) as count").where("DownloadSuccess=?","1").group("date(Date)") 
    respond_to do |format| 
    format.pdf 
    end 
end 

在这两种情况下,我猜你需要让prawnto的控制器魔法接管。

相关问题