我在制作一个找到两个数组交集的简单表单时遇到了麻烦。最终目标是找到两个电子邮件阵列的交集,但现在我只是用整数测试。一切都在控制器中工作,如果我在视图中硬编码数组,我得到正确的结果。以下是我的代码
Rails控制台,一切都是犹太洁食:
1.9.3p374 :011 > _a
=> [1, 2, 3, 4]
1.9.3p374 :012 > _b
=> [1, 2, 1, 1, 1]
1.9.3p374 :013 > c = _a & _b
=> [1, 2]
当我尝试从表单传递相同的值时,我得到一个空数组结果(我将两个数组都传递到视图中以确保它们存在。
控制器:
def intersect
@array1 = [params[:a]]
@array2 = [params[:b]]
@intersection = @array1 & @array2
end
视图中的代码:
Array 1: <%= @array1 %> <br>
Array 2: <%= @array2 %><br>
Intersection: <%= @intersection %>
浏览器中的结果:
Array 1: ["1,2,3,4,5"]
Array 2: ["1,2,2,3,3"]
Intersection: []
因为我可以让这个工作硬编码我确定我正在做一些新鲜事!任何帮助都是不受欢迎的!
答案 0 :(得分:9)
您的数组每个都包含一个元素,即字符串"1,2,3,4,5"
。您可能需要一个包含5个元素的数组([1,2,3,4,5]
)。您可以通过逗号上的splitting数组来执行此操作:
@array1 = params[:a].split(',')
@array2 = params[:b].split(',')
@intersection = @array1 & @array2
#=> ["1", "2", "3", "4", "5"]