数组rails的哈希值不是链值但删除

时间:2015-12-02 00:59:08

标签: ruby-on-rails arrays ruby hash

我试图在这个散列中插入一些值,因为每个键都是一个数组但是当我打印所有结果时只是最后一个值

def self.hash_builder(query)

       statistic = Hash.new { |hash, key| hash[key] = [] }    

          if !query.empty?

            query.each do |q|

              statistic[:sell].push(q.total_sell.to_i)
              statistic[:price].push(q.total_price.to_f)

            end
          else
            statistic[:sell].push(0)
            statistic[:price].push(0.0)

          end

        return statistic
end

我在进行查询后调用此方法,并使用新的params向此发送查询,但每次我在此哈希中看到最后一个查询值

这是结果

right output

1 个答案:

答案 0 :(得分:1)

我会在这里回答,因为评论部分没有足够的空间。您对<<的看法不对。它应该工作正常。

$ irb
irb(main):001:0> s = Hash.new {|h, k| h[k] = [] }
=> {}
irb(main):002:0> s[:sell] << 1
=> [1]
irb(main):003:0> s[:sell] << 2
=> [1, 2]
irb(main):004:0> s[:sell]
=> [1, 2]
irb(main):005:0> s[:price]
=> []

但是push也应该有用。

irb(main):006:0> s[:sell].push(3)
=> [1, 2, 3]