【发布时间】:2010-12-27 12:47:06
【问题描述】:
这可能更多是设计或使用问题,但主要问题是在 Rails 2.3.4 中使用 Prawn 插件并访问生成的 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}"
这工作正常,生成一个响应 /customers/1.pdf 的 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 变量也不起作用。
有什么建议吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-plugins prawn prawnto