2009-12-17 79 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變量也不起作用。 有什麼建議嗎?

回答