這可能更多是一個設計或用法問題,但主要問題是使用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