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
我刚刚在 Sinatra 的优秀 API 文档中发现 Sinatra::Request 是 Rack::Request 的子类。Sinatra 处理程序继承的请求对象有一个 POST 方法,该方法返回提交的表单字段的哈希值。
request.POST.each { |k,v| puts "#{k} = #{v}" }
它只是一个哈希:P 所以就像使用任何哈希一样迭代它