我正在填充数据库中的哈希数组,最后得到的结果如下:
[{:element1 => "value1", :element2 => "value2"}, {:element1 => "value3", :element2 => "value4"}]
如果element1具有value1,我现在要做的是写入element2的值。我试着做了
puts my_array[my_array.index(:element1 => "value1")].element2
但这只会给我一个错误说:
no implicit conversion from nil to integer
我现在使用的是
puts my_array.find_by_element1("value1").element2
但是每次都会查询数据库,如果可能的话我想避免这种情况,因为我已经拥有了所有的值。
编辑:我的Ruby版本是1.8.7
答案 0 :(得分:2)
您不能将index
用于部分匹配。尝试使用detect
。
my_array.detect { |el| el[:element1] == "value1" }[:element2]
=> "value2"
答案 1 :(得分:1)
result = [{:element1 => "value1", :element2 => "value2"}, {:element1 => "value3", :element2 => "value4"}]
result.each do |x|
puts "#{x[:element2]}" if x[:element1]=="value1"
end