2010-06-07 16 views
1

J'ai deux fichiers PDF qui sont faits "à la volée" en utilisant Prawn PDF.Rails et crevettes PDF - ajouter l'ID de l'élément actuel au nom de fichier?

Les fichiers PDF sont appelés jobsheet.pdf et discharge.pdf - leurs URL sont:

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

Je suis en train de travailler sur comment ajouter automagiquement le nom du fichier avec le numéro d'identification:

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

Pour créer les fichiers PDF le code est le suivant:

Kases contrôleur

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 

Routes

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

Pour afficher les fichiers PDF que j'utilise les liens suivants:

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

Est-ce même possible?

Merci,

Danny

Répondre

1

De l'prawnto documentation il ressemble à la méthode prawnto prend en charge le passage d'un nom de fichier dans le cadre du hachage des options. Donc, vous devriez être en mesure de faire quelque chose comme ceci:

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

Salut John, je remarquai que dans les documents il y a quelques minutes, mais il ne semble pas avoir d'effet. Les noms sont toujours jobsheet.pdf et discharge.pdf - mes itinéraires pourraient-ils remplacer le nom? Merci, Danny – dannymcc

+0

Ahh - ignorez-moi. Le nom de fichier fonctionne, mais je m'attendais à un changement dans l'URL - mon erreur. Merci de votre aide! Merci, Danny – dannymcc