在 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/