【问题标题】:How does one access all form fields in Sinatra?如何访问 Sinatra 中的所有表单域?
【发布时间】:2009-10-31 05:42:53
【问题描述】:

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

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

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

request.body.split('&') 

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

【问题讨论】:

    标签: ruby sinatra


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 是的,params 是一个哈希 - 但正如 Rack API 文档所说,它是“GET 和 POST 数据的联合”。我需要一种方法来仅查找 POST 数据,因此 request.POST 方法是理想的。
        猜你喜欢
        • 2019-10-19
        • 2014-12-10
        • 2018-12-28
        • 2018-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多