阅读RoR中的参数数组

时间:2011-04-13 10:10:37

标签: ruby-on-rails ruby webrequest

如果我的网址如下:

http://test.com?x=1&x=2&x=3&x=4&x=5&x=6&x=7

然后我如何阅读所有“x”值?

添加了新评论:感谢您的所有答案。我基本上来自Java和.Net背景,最近开始寻找Ruby和Rails。就像在Java中一样,我们没有像request.getParameterValues(“x”);

那样的东西

3 个答案:

答案 0 :(得分:26)

您应该使用以下网址而不是您的网址:

http://test.com?x[]=1&x[]=2

然后你会把这些参数作为数组:

p params[:x] # => ["1", "2"]

答案 1 :(得分:3)

如果它是一个字符串,而不是一个http请求

这样做:

url = 'http://test.com?x=1&x=2&x=3&x=4&x=5&x=6&x=7'

p url.split(/(?:\A.*?|&)x=/).drop(1)

如果要将它们转换为整数,请执行以下操作:

p url.split(/(?:\A.*?|&)x=/).drop(1).map(&:to_i)  (ruby 1.9)

p url.split(/(?:\A.*?|&)x=/).drop(1).map{|v| v.to_i}

答案 2 :(得分:2)

如果它是一个字符串,而不是一个http请求我甚至没想到作者是否不知道如何处理请求URL的索引...

url = "http://test.com?x=1&x=2&x=3&x=4&x=5&x=6&x=7"
vars = url.scan(/[^?](x)=([^&]*)/)
#=> [["x", "2"], ["x", "3"], ["x", "4"], ["x", "5"], ["x", "6"], ["x", "7"]] 
x = vars.map{|a| a[1]}
#=> ["2", "3", "4", "5", "6", "7"]
x.map!(&:to_i)
#=> [2, 3, 4, 5, 6, 7] 

或者如果您只需要提取valuse:

vars = url.scan(/[^?]x=([^&]*)/).flatten
#=> ["2", "3", "4", "5", "6", "7"]
vars = url.scan(/[^?]x=([^&]*)/).flatten.map(&:to_i)
#=> [2, 3, 4, 5, 6, 7]