2009-05-24 11 views
11

c'è un'impalcatura creato storia ... e nell'azione creare, c'èin Ruby on Rails 2.3.2, come stampare i parametri durante un'azione di creazione?

@story = Story.new(params[:story]) 

ero curioso di vedere ciò che è in params ... quindi voglio fare uscire fuori params ... ma ci non è una vista associata all'azione di creazione ... c'è un modo per scaricare il suo contenuto? c'è un modo per scaricare le variabili POST anche nel mio codice? (Per vedere cosa sta succedendo nel livello più basso)

risposta

20

La cosa più facile da fare è scaricare params fuori al registro:

Rails.logger.info("PARAMS: #{params.inspect}") 

Se siete in modalità di sviluppo, basta guardare nel vostro sviluppo. log e quella linea sarà lì.

L'ambito dei parametri è una combinazione di campi URL/FORM (GET/POST) e verrà stampato nel registro come parte dell'elaborazione di output normale, quindi potrebbe non essere necessario il proprio scaricamento di esso - qualsiasi registro di sviluppo o produzione contiene il dump params nella parte superiore della riga di registro, ad es

Processing Clients::ClientsController#show (for x.x.x. at 2009-05-24 00:34:26) [GET] 
    Parameters: {"id"=>"303", "user_id"=>"2"} 
+0

È questo a prescindere dal log_level? –

+0

@willem obst - no, hai ragione, questo verrà stampato solo quando il livello del registro è informativo o inferiore. Puoi usare Rails.logger.debug per stamparlo sia nello sviluppo che nella produzione. –

1

Se siete su un Mac, Spike è un piccolo grande applicazione delle analisi log file e vi permetterà di ispezionare params per le richieste, tra le altre cose.

1

Utilizzando Fiddler su Windows, esso viene mostrato

la linea HTTP # 1 è:

POST /stories HTTP/1.1 

Questo è il contenuto POST:

authenticity_token = 62iw% 2BrsxlCFsbnxsS7FXKRn6CcvJfjottrsBPlM5lZo% 3D & storia% 5Bname% 5D = Google + Principale + Sito & storia% 5Blink% 5D = www.google.com & commit = Crea

elencati in una tabella:

authenticity_token 62iw+rsxlCFsbnxsS7FXKRn6CcvJfjottrsBPlM5lZo= 
story[name]   Google Main Site 
story[link]   www.google.com 
commit    Create 

e il registro del server è:

Parametri: { "commettere" => "Crea", "storia" => { "nome" => "Google Site principale", "link" => "www.google.com"}, "authenticity_token" => "62iw + rsxlCFsbnxsS7FXKRn6CcvJfjottrsBPlM5lZo ="}

1

non c'è bisogno di nulla, tranne sguardo i tuoi registri (vivono in /log). A meno che non si stia manipolando qualcosa, la registrazione dei parametri è attivata per impostazione predefinita in tutti i registri.

Processing PostsController#create (for 127.0.0.1 at 2009-05-24 13:03:24) [POST] 
    Parameters: {"commit"=>"Create", "authenticity_token"=>"2G6BKOs8xNAaXiToVf4r1ko8QZzP9QAomi2PHVQC5Oc=", "story"=>{"something"=>"asdfafd"}} 

Parameters elenca tutti i parametri, e l'hash seguente "story" è l'equivalente di params[:story] (tutto viene al server come stringhe, e Rails lo trasforma in un HashWithIndifferentAccess in modo che vi si possa accedere con un simbolo).

0

Se siete su un sistema * nix (incluso OS X) aprire una nuova finestra di terminale/scheda e digitare il seguente comando:

tail -f log/sviluppo.log

Riceverai un flusso costante di richieste in arrivo - inclusi i parametri - e le azioni DB risultanti. Inestimabile per lo sviluppo/debugging, IMO.

2

Ora so Rails di più, è anche possibile utilizzare semplicemente un

p params 

nel codice e guardare l'uscita della console (il registro mostrato sulla console)