Ruby - 添加到多维数组

时间:2013-01-24 20:49:04

标签: ruby-on-rails ruby multidimensional-array

我想循环一个进程并每次都向我的数据库添加一个对象,但如果没有正确添加,我想在多维数组中收集错误。一个数组将保留哪个Lot有错误,第二个数组将有错误消息。

这是我的声明:

errors = [[],[]]

所以我希望数组的格式如下:

[[lot_count, "#{attribute}: #{error_message}" ]]

循环后应该是这样的:

[[1, "Name: Can not be blank" ],[1, "Description: Can not be blank" ],[2, "Name: Can not be blank" ]]

我的问题是它不会将它添加到数组中。我不确定多维数组的语法是否不同。

这在我的数组中没有任何内容

errors.push([[lot_count, "#{attribute}: #{error_message}" ]])

这也在我的数组中没有给我任何东西

errors += [[lot_count, "#{attribute}: #{error_message}" ]]

2 个答案:

答案 0 :(得分:3)

推送时,您的阵列看起来太深了:

errors.push([lot_count, "Foo:Bar"])
# => [[], [], [1, "Foo:Bar"]]

答案 1 :(得分:3)

你可以从一个空数组开始......

errors = []

...然后构建单个错误数组......

e = [lot_count, "#{attribute}: #{error_message}" ]

...并将其推送到errors数组的末尾。

errors << e
# or errors.push(e)

这将为您提供最终结果

[[1, "Name: Can not be blank" ],[1, "Description: Can not be blank" ],[2, "Name: Can not be blank" ]]