2009-10-30 10 views
5

Sinatra hace que sea fácil acceder a cualquier campo de formulario de entrada en particular por su nombre:¿Cómo se accede a todos los campos de formulario en Sinatra?

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

Pero ¿cómo se enumera más de todos los campos de formulario en una solicitud? No encontré nada en la documentación. Incluso intenté

request.body.split('&') 

pero request.body es una instancia de StringIO, y no una cadena.

Respuesta

9

Si params es un hash, puede intentar:

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

es sólo un hash: P por lo que sólo iterar como lo haría con cualquier hash de

+0

Sí, params es un hash - pero es "la unión de datos POST GET y" según los documentos de la API rack ponerlo. Necesitaba una forma de encontrar solo los datos POST, por lo que el método request.POST es ideal. – davidstamm

7

acabo de descubrir en excelentes documentos de la API de Sinatra que Sinatra :: Request es una subclase de Rack :: Request. El objeto de solicitud disponible para controladores de Sinatra hereda tiene un método POST que devuelve un hash de campos de formulario enviados.

request.POST.each { |k,v| puts "#{k} = #{v}" } 
Cuestiones relacionadas