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

发布于 2024-08-09 01:23:57 字数 266 浏览 3 评论 0原文

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

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

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

request.body.split('&') 

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

Sinatra makes it easy to access any particular incoming form field by name:

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

But how does one enumerate over all the form fields in a request? I found nothing in the documentation. I even tried

request.body.split('&') 

but request.body is an instance of StringIO, and not a string.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

水中月 2024-08-16 01:23:57

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

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

If params is a hash, you can try:

params.keys.each do |k|
   puts "#{k} - #{params[k]}"
end
痴意少年 2024-08-16 01:23:57

它只是一个散列:P,所以只需像使用任何散列一样迭代它

its just a hash :P so just iterate it like you would with any hash

白况 2024-08-16 01:23:57

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

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

I just discovered in Sinatra's excellent API docs that Sinatra::Request is a subclass of Rack::Request. The request object available to Sinatra handlers inherits has a POST method which returns a hash of submitted form fields.

request.POST.each { |k,v| puts "#{k} = #{v}" }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文