Question

Ceci est probablement plus une question de conception ou d'utilisation, mais le principal problème est d'utiliser le plug-in avec Rails Prawn 2.3.4 et accéder à l'objet PDF résultant pour le rendre à un fichier.

Le scénario est essentiellement;

  • un contrôleur avec la configuration du bloc respond_to
  • une vue avec le code pour rendre le texte, les graphiques, etc au format PDF

Il ressemble à:
De Contrôleur client

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

De Vue client

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

Cela fonctionne bien, la production d'un fichier PDF en réponse à /customers/1.pdf, comme prévu avec un fichier PDF généré.

L'une des autres exigences est de rendre le pdf dans un fichier et stocker une copie sur le serveur. Prawn fournit la méthode: pdf.render_file {path_tofile}

Alors maintenant, si j'inclure dans le code Voir je peux bien sûr enregistrer le fichier sur le serveur. Mais je voudrais gérer ce dans le contrôleur, car il est lié à la logique, pas voir en soi.

La première tentative était:

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

De Vue client

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

PROBLÈME Le problème avec cette tentative est que le PDF est pas rendu. Je me doutais bien la variable d'instance du contrôleur se heurte à la variable Plugin Prawnto de pdf. Mais même changer la variable PDF ne fonctionne pas. Toutes les suggestions?

Était-ce utile?

La solution

Voici comment j'utilise langoustine dans mon application Rails: http://yob.id.au/2009/05/30/prawn-and-x-accel-redirect.html - il n'utilise pas du tout prawnto

.

Vous pouvez ignorer les choses X-Accel-Redirect sauf si vous utilisez nginx.

En variante, un autre des développeurs de base de crevettes a mis en place ce guide:

scroll top