2013-04-09 212 views
0

这段代码我有产品控制器指数法:PDF生成器3

def index 

    @products = Product.all 

    respond_to do |format| 
     format.html 
     format.pdf do 
     pdf = PDF::Writer.new 
     @products.each do |product| 
      pdf.text product.name 
     end   
     send_data pdf.render, :filename => 'products.pdf', :type => 'application/pdf', :disposition => 'inline' 
     end 
    end 
    end 

和 environment.rb文件中

require 'pdf/writer' 

Mime::Type.register 'application/pdf', :pdf 

当运行程序我正在错误

未定义方法'each'for“Pen”:字符串

+1

你使用的是什么版本的ruby,rails和PDF :: Writer?哪行代码抛出错误? – sockmonk 2013-04-09 17:55:18

+0

我正在使用rails 3.2.12,并在gem文件中添加了gem'pdf-writer'我在@ products.each中收到错误|产品|作为“每个”未定义的方法“笔”:字符串“ – jeevaweb 2013-04-09 18:09:21

回答

1

啊哈。根据PDF::Writer's home page,“PDF :: WRITER已于2010年4月15日停止使用,请使用其精神上的继承者,不要使用它。”

我个人很高兴使用虾来生成PDF的。但为了直接回答你的问题,我的猜测是你可能使用了ruby 1.9.x,它稍微改变了String API,而PDF :: Writer是为Ruby 1.8.7而设计的。

0

使用metaskills-pdf-writer gem。发生这个错误是因为Ruby 1.8上的每个字符串方法在版本1.9上都发生了变化。所以这不再适用于新版本的Ruby。我提到的这个宝石将解决这个问题。