ruby-on-rails - 如何使用相同的键在Rails中接受多个URL参数?

标签 ruby-on-rails ruby url-parameters

在 Rails 中,当您想通过单个数组参数发送值列表时,you usually do so通过在 URL 参数键后缀 [] .例如,查询字符串 ?foo[]=1&foo[]=2&foo[]=3被解析为

params = { "foo" => [ 1, 2, 3 ] }

但是对于 ?foo=1&foo=2&foo=3 ,只有最后一个参数出现在 params 哈希中:
params = { "foo" => 3 }

当您可以控制 URL 格式时,一切都很好;您可以使用 []句法。但是,如果 URL 是由您无法影响的远程系统构建的,并且坚持使用第二种格式呢?如何正确解压参数?

最佳答案

使用来自@maxcal 的提示,我想出了这个解决方案(以避免向我正在开发的这个完全臃肿的应用程序中添加更多的 gem ):

current_query_string = URI(request.url).query
foo_values = URI::decode_www_form(current_query_string).
  select { |pair| pair[0] == "foo" }.
  collect { |pair| pair[1] }

关于ruby-on-rails - 如何使用相同的键在Rails中接受多个URL参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30616529/

相关文章:

ruby-on-rails - 为 Rails 中的所有 Controller 创建一个全局变量

Python 字典到 URL 参数

ruby-on-rails - 如何简化 Rails 3 中的 "render_to_string"?

mysql - Rails 3. 在 SQL 中检查真值

ruby-on-rails - 如果我只需要一个数据库和一个 API,那么使用 Sinatra 而不是 RoR 有什么好处

ruby-on-rails - 路由将 JSON 请求解释为 HTML?

基于请求参数的Spring安全认证

javascript - 使用 jQuery 获取 URL 参数并将它们显示在 HTML 输入文本字段中

jquery - Rails 在保存到数据库之前弹出窗口

javascript - Ruby 和 JavaScript 之间的 RSA key 对加密/解密?