[ruby-it] Problema banale con le variabili
Pietro Giorgianni
giorgian a gmail.com
Mar 9 Giu 2009 09:10:08 CEST
Il giorno 9 giugno 2009 8.58, jamba jamba<faletra a gmail.com> ha scritto:
> def pdf
> @numero = Invoice.find(:all)
> _pdf = PDF::Writer.new
> _pdf.select_font "Times-Roman"
> _pdf.text "Prova", :font_size => 20, :justification => :left
> _pdf.line(50, 690, 560, 690).stroke
>
>
> send_data _pdf.render, :filename => (@numero+".pdf"), :type =>
> "application/pdf"
> end
Invoice.find(:all) restituisce un proxy, un oggetto che sa diventare
lista o iteratore o altro, ma non è certamente un numero. quando fai
@numero + ".pdf", ruby tenta di convertirli nello stesso tipo, e in
particolare cerca di trasformare ".pdf", stringa, in un array.
Ovviamente fallisce.
Forse hai fatto un po' di confusione, anche perché non credo tu voglia
stampare tutto in una volta; più probabilmente (correggimi se sbaglio)
vuoi stampare una fattura soltanto.
Se è così, probabilmente starai passando un id al metodo (vale a dire,
avrai una url tipo /invoice/pdf/3, o /invoice/3/pdf, o altro, e
all'interno del metodo quell'id sarà accessibile tramite params[:id].
Continuando con quest'ipotesi, il codice dovrebbe assomigliare a questo:
fattura = Invoice.find(params[:id])
...
send_data_pdf.render :filename =>
"#{fattura.campo_che_rappresenta_il_numero_della_fattura}.pdf", ...
Se ho preso una cantonata scrivi più dettagli.
pietro
More information about the Ml
mailing list