2009-12-17 78 views
1

这可能更多是一个设计或用法问题,但主要问题是使用Rails 2.3.4的Prawn插件并访问生成的PDF对象以将其渲染为文件。使用Prawn&Prawnto for Rails PDF生成

该场景基本上是;

  • 与respond_to代码块设置
  • 与代码视图渲染后的文本,图形等,以PDF

它看起来像:
从客户控制器

def show  
    @customer = Customer.find(params[:id]) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @customer } 
     format.pdf { render :layout => false } 
end 

来自客户查看

pdf.text "Hello World" 
    pdf.text "Customer is #{@customer.name}" 

工作正常,生成PDF文件以响应/customers/1.pdf,正如预期生成PDF文件一样。

其他要求之一是将pdf渲染到文件并将副本存储在服务器上。虾提供的方法: pdf.render_file {path_tofile}

所以,现在如果我在视图代码中包括这我当然可以保存在服务器上的文件。但我想在控制器中进行管理,因为它与逻辑有关,而不是查看本身。

的第一次尝试是:

def show  
    @customer = Customer.find(params[:id]) 
    @pdf = Prawn::Document.new() 

    respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @customer } 
     format.pdf { render :layout => false } 
     pdf.render_file {path_to_file} 
end 

从客户视图

pdf.text "Hello World" 
    pdf.text "Customer is #{@customer.name}" 

问题 这种尝试的问题是,PDF不渲染。我怀疑Controller实例变量与Prawnto Plugin pdf变量冲突。但即使更改PDF变量也不起作用。 有什么建议吗?

回答