这可能更多是一个设计或用法问题,但主要问题是使用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变量也不起作用。 有什么建议吗?
詹姆斯,对信息的感谢。这两篇文章在替代方法上给出了很好的平衡。 – 2009-12-17 20:49:21