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