更新哈希

时间:2009-07-21 00:38:20

标签: ruby-on-rails ruby arrays

所以我在这里得到了这个哈希,我有一个循环。当循环检测到散列已经有一个值vendor =“something” - 并且循环的值是“某事” - 我希望它只是转到散列并更新一些值(价格,访问)。

为了简化这一点,基本上我有一个哈希数组,当我发现我已经有一个具有某个供应商价值的哈希时,我想更新哈希值(只改变价格和访问次数)。

供你参考,我的catlists对象看起来像这样 - @catLists = {[1] => {:vendor,:price,:visits,:month,:type},[2] => {:vendor,:price,:visits,:month,:type},[3] => {:vendor,:price,:visits,:month,:type},etc}

@income.each do |query|
            queriedmonth = Date::MONTHNAMES[query.postdate.month]
            thevendor = query.detail.capitalize
            theprice = query.amount
            numvisits = 1 #change this later
            hit = "no"

            @catLists.each do |item|
                if (item.has_value?(thevendor))
                    hit = "yes"
                    //So here I want to update the hash in my catLists array.
                end
            end
            if (hit=="no")
                vendorlist << thevendor
                @catList = {:vendor => thevendor, :price => theprice, :visits => numvisits, :month =>queriedmonth, :type=> "income"}
                #Push onto our array
                @catLists << @catList
            end


        end

我将如何做到这一点?

感谢您的帮助,对此问题的复杂性感到抱歉。有点奇怪,我找不到一个好方法。

1 个答案:

答案 0 :(得分:2)

为什么当你发现命中时这不起作用?

@catLists.each do |item|
  if (item.has_value?(thevendor)) 
    hit = "yes"
    item[:price] = theprice
    item[:visits] = numvisits
  end
end