Domanda

Questo è probabilmente più un disegno o utilizzo questione, ma il problema principale sta usando il plugin di gamberi con Rails 2.3.4 e accedere all'oggetto PDF risultante a rendere in un file.

Lo scenario è fondamentalmente;

  • un controller con la configurazione blocco respond_to
  • una vista con il codice per il rendering del testo, la grafica ecc per PDF

Si presenta come:
Dal controllo dei clienti

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

Da Clienti Visualizza

  pdf.text "Hello World"  
  pdf.text "Customer is #{@customer.name}"

Questo funziona bene, producendo un file PDF in risposta a /customers/1.pdf, come previsto con un file PDF generato.

Uno degli altri requisiti è quello di rendere il pdf in un file e archiviare una copia sul server. Prawn fornisce il metodo: pdf.render_file {path_tofile}

Così ora se abbia inserito questo nel codice View posso, naturalmente, salvare il file sul server. Ma mi piacerebbe gestire questo nel controller, in quanto è legato alla logica, non vista di per sé.

Il primo tentativo è stato:

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

Da Clienti Visualizza

  pdf.text "Hello World"  
  pdf.text "Customer is #{@customer.name}"

PROBLEMA Il problema con questo tentativo è che il PDF non viene eseguito il rendering. Sospettavo la variabile di istanza Controller è scontrandosi con la variabile pdf Prawnto Plugin. Ma anche cambiando la variabile PDF non ha funzionato. Qualche suggerimento?

È stato utile?

Soluzione

Questo è il modo che uso nel mio gamberi rotaie app: http://yob.id.au/2009/05/30/prawn-and-x-accel-redirect.html - non usa prawnto a tutti

.

È possibile ignorare la roba X-Accel-reindirizzamento a meno di utilizzare nginx.

In alternativa, un altro degli sviluppatori principali gamberi ha messo insieme questa guida: http://wiki.github.com/sandal/prawn/using-prawn-in-rails

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top