2010-06-07 60 views
1

我有两个使用Prawn PDF进行“实时”制作的PDF。Rails and Prawn PDF - 将当前项目ID添加到文件名?

的PDF文件被称为jobsheet.pdf和discharge.pdf - 他们的网址是:

railsroot/kases/IDNO/jobsheet.pdf 
railsroot/kases/IDNO/discharge.pdf 

我试图找出如何自动地添加与ID号的文件名:

railsroot/kases/IDNO/jobsheet_IDNO.pdf 
railsroot/kases/IDNO/discharge_IDNO.pdf 

要创建的PDF的代码如下:

Kases控制器

def jobsheet 
    @kase = Kase.find(params[:id]) 

    respond_to do |format| 
     format.html {} # jobsheet.html.erb 
     format.xml { render :xml => @kase } 
     format.pdf { render :layout => false } 

     prawnto :prawn => { 
       :background => "#{RAILS_ROOT}/public/images/jobsheet.png", 
       :left_margin => 0, 
       :right_margin => 0, 
       :top_margin => 0, 
       :bottom_margin => 0, 
       :page_size => 'A4' } 
    end 

    end 

    # GET /kases/1 
    # GET /kases/1.xml 
    def discharge 
    @kase = Kase.find(params[:id]) 

    respond_to do |format| 
     format.html { } # discharge.html.erb 
     format.xml { render :xml => @kase } 
     format.pdf { render :layout => false } 

     prawnto :prawn => { 
       :background => "#{RAILS_ROOT}/public/images/discharge.png", 
       :left_margin => 0, 
       :right_margin => 0, 
       :top_margin => 0, 
       :bottom_margin => 0, 
       :page_size => 'A4' } 
    end 

    end 

路线

map.resources :kases, :member => { :discharge => :get } 
    map.resources :kases, :member => { :jobsheet => :get } 

要查看我使用下面的链接PDF文件:

jobsheet_kase_path(@kase, :format => 'pdf') 
discharge_kase_path(@kase, :format => 'pdf') 

这甚至可能吗?

感谢,

丹尼

回答

1

从它看起来像prawnto方法支持传递一个文件名作为选项散列的一部分prawnto documentation。所以,你应该能够做这样的事情:

def jobsheet 
    @kase = Kase.find(params[:id]) 

    respond_to do |format| 
    format.html # jobsheet.html.erb 
    format.xml { render :xml => @kase } 
    format.pdf { render :layout => false } 

    prawnto :filename => "jobsheet_#{@kase.id}", :prawn => { 
     :background => "#{RAILS_ROOT}/public/images/jobsheet.png",   
     :left_margin => 0, 
     :right_margin => 0, 
     :top_margin => 0, 
     :bottom_margin => 0, 
     :page_size => 'A4' } 
    end 
end 
+0

约翰嗨, 我注意到,在文档几分钟前,但它似乎没有任何效果。名字仍然是jobsheet.pdf和discharge.pdf - 我的路线可以覆盖这个名字吗? 谢谢, 丹尼 – dannymcc 2010-06-07 12:41:00

+0

啊 - 不理我。文件名正在工作,但我期待URL的更改 - 我的错误。 感谢您的帮助! 谢谢, Danny – dannymcc 2010-06-07 12:44:42