西纳特拉可以很容易地通过名称访问任何特定的传入表单字段:如何访问Sinatra中的所有表单域?
post "/" do
params['form_field_name']
end
但如何一个枚举所有在请求表单字段?我在文档中找不到任何东西。我甚至试过
request.body.split('&')
但request.body是StringIO的一个实例,而不是一个字符串。
西纳特拉可以很容易地通过名称访问任何特定的传入表单字段:如何访问Sinatra中的所有表单域?
post "/" do
params['form_field_name']
end
但如何一个枚举所有在请求表单字段?我在文档中找不到任何东西。我甚至试过
request.body.split('&')
但request.body是StringIO的一个实例,而不是一个字符串。
如果params
是一个哈希,你可以尝试:
params.keys.each do |k|
puts "#{k} - #{params[k]}"
end
它只是一个哈希:P所以只是重复它就像你使用任何哈希
我只是在Sinatra的优秀API文档发现, Sinatra :: Request是Rack :: Request的一个子类。可用于Sinatra处理程序的请求对象继承了一个POST方法,该方法返回提交的表单字段的散列。
request.POST.each { |k,v| puts "#{k} = #{v}" }
是的,params是一个散列 - 但它是“GET和POST数据的联合”,正如Rack API文档所说的那样。我需要一种方法来查找POST数据,所以request.POST方法是理想的。 – davidstamm 2009-10-30 21:44:14