2009-10-30 10 views
5

Sinatra rende facile accedere a qualsiasi campo particolare forma in entrata per nome:Come si accede a tutti i campi modulo in Sinatra?

post "/" do 
    params['form_field_name'] 
end 

Ma come si enumera oltre tutte i campi del modulo in una richiesta? Non ho trovato nulla nella documentazione. Ho anche provato

request.body.split('&') 

ma request.body è un'istanza di StringIO e non una stringa.

risposta

9

Se params è un hash, si può provare:

params.keys.each do |k| 
    puts "#{k} - #{params[k]}" 
end 
0

il suo solo un hash: P così appena iterare è come si farebbe con qualsiasi hash

+0

Sì, Params è un hash - ma è "l'unione di GET e POST dati", come la documentazione rack API metterlo. Avevo bisogno di un modo per trovare solo i dati POST, quindi il metodo request.POST è l'ideale. – davidstamm

7

Ho appena scoperto in ottime documentazione API di Sinatra che Sinatra :: Request è una sottoclasse di Rack :: Request. L'oggetto di richiesta disponibile per i gestori di Sinatra eredita ha un metodo POST che restituisce un hash dei campi modulo inviati.

request.POST.each { |k,v| puts "#{k} = #{v}" } 
Problemi correlati