这可能更多是设计或使用问题,但主要问题是在 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 Pluginpdf
变量发生冲突。但即使更改 PDF 变量也不起作用。有什么建议么 ?