2010-07-27 10 views

risposta

82

Nel controllore è possibile:

render :text => @some_object.inspect 

Ma il vostro punto di vista non sarà reso.

Si potrebbe anche:

Rails.logger.debug("My object: #{@some_object.inspect}") 

ed eseguire coda log/development.log per visualizzare l'output.

Nella vista il modo in cui è recommeneded:

<%= debug(@some_object) %> 
+1

Questo è ben [documentato qui] (http://guides.rubyonrails.org/debugging_rails_applications.html#the-logger). –

+0

Ho messo <% = debug (@some_object)%> per il mio oggetto istanza in vista. Ma viene stampato così com'è, senza mostrarmi il valore dell'oggetto. – hatellla

+0

debug() tenta di chiamare to_yaml() sull'oggetto. Se non può, chiama invece inspect(). – Papipo

5

Non so print, ma puts non mi ha mai mancato. Il tuo hello world sarà in console e registra e il flusso normale continuerà.
Ho capito bene?

+1

oh, in realtà, può mostrare sulla pagina web? –

1

In realtà, il suggerimento di Nikita non è male. Ma di solito è difficile guardare i dati nel terminale perché la dimensione del buffer dello schermo può essere limitata ed è piena di dati precedenti dal precedente rendering di pagine.

Ma, dicono su Mac, basta assicurarsi che il buffer dello schermo è abbastanza grande, e anche l'uso nel terminale rails server la chiave Comandok per cancellare il buffer intero schermo prima, e utilizzare il browser per andare a prendere una pagina Web, e ora utilizzare Comandof per cercare la stringa stampata e funziona anche molto bene. In realtà se Comandok viene utilizzato per cancellare prima tutto il buffer dello schermo, quindi la stampa dovrebbe sempre rientrare nel buffer dello schermo.

2

è possibile utilizzare abortire con ispezionare

abort params[:whatevs].inspect 

o

abort @my_variable.inspect 

per JSON formato

render json: JSON.pretty_generate(JSON.parse(@my_variable.to_json)) 
Problemi correlati