5

Sinatra 可以通过名称轻松访问任何特定的传入表单字段:

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

但是如何枚举请求中的所有表单字段呢?我在文档中一无所获。我什至试过

request.body.split('&') 

但 request.body 是 StringIO 的一个实例,而不是字符串。

4

3 回答 3

10

如果params是哈希,您可以尝试:

params.keys.each do |k|
   puts "#{k} - #{params[k]}"
end
于 2009-10-30T21:38:55.400 回答
7

我刚刚在 Sinatra 的优秀 API 文档中发现 Sinatra::Request 是 Rack::Request 的子类。Sinatra 处理程序继承的请求对象有一个 POST 方法,该方法返回提交的表单字段的哈希值。

request.POST.each { |k,v| puts "#{k} = #{v}" }
于 2009-10-30T21:42:53.187 回答
0

它只是一个哈希:P 所以就像使用任何哈希一样迭代它

于 2009-10-30T21:40:01.327 回答