如何访问Sinatra中的所有表单字段?

时间:2009-10-30 21:29:30

标签: ruby sinatra

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

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

但是如何枚举所有请求中的表单字段?我在文档中找不到任何内容。我甚至试过

request.body.split('&') 

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

3 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:7)

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

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

答案 2 :(得分:0)

它只是一个哈希:P所以只需像使用任何哈希

那样迭代它