El uso de gambas y Prawnto de rieles generación de PDF
-
20-09-2019 - |
Pregunta
Esto es probablemente más una cuestión de diseño o el uso, pero el principal problema está usando el plugin de langostinos con Rails 2.3.4 y acceder al objeto PDF resultante para convertirlo en un archivo.
El escenario es básicamente;
- un controlador con la configuración de bloque respond_to
- una vista con código para hacer que el texto, gráficos, etc a PDF
Parece que:
De Controlador cliente
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
Desde vista al cliente
pdf.text "Hello World"
pdf.text "Customer is #{@customer.name}"
Esto funciona bien, produciendo un archivo PDF en respuesta a /customers/1.pdf, como era de esperar con un archivo PDF que se genera.
Uno de los requisitos es para hacer que el pdf a un archivo y guardar una copia en el servidor. Gamba proporciona el método:
pdf.render_file {path_tofile}
Así que ahora si incluyo esto en el código de Vista Por supuesto, puedo guardar el archivo en el servidor. Pero me gustaría para manejar esto en el controlador, ya que está relacionado con la lógica, no considera per se.
El primer intento fue:
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
Desde vista al cliente
pdf.text "Hello World"
pdf.text "Customer is #{@customer.name}"
PROBLEMA
El problema con este intento es que el PDF no se representa. Sospeché la variable de instancia controlador está chocando con la variable pdf
Prawnto Plugin. Pero incluso cambiando la variable PDF no funcionó.
¿Alguna sugerencia?
Solución
Esta es la forma en que uso en mi gambas carriles de aplicación: http://yob.id.au/2009/05/30/prawn-and-x-accel-redirect.html - que no utiliza en absoluto prawnto
.Puede pasar por alto las cosas X-Accel-redirigir a menos que utilice nginx.
Alternativamente, otro de los desarrolladores de núcleo de gambas ha puesto juntos esta guía: http://wiki.github.com/sandal/prawn/using-prawn-in-rails