所以我在这里得到了这个哈希,我有一个循环。当循环检测到散列已经有一个值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
我将如何做到这一点?
感谢您的帮助,对此问题的复杂性感到抱歉。有点奇怪,我找不到一个好方法。
答案 0 :(得分:2)
为什么当你发现命中时这不起作用?
@catLists.each do |item|
if (item.has_value?(thevendor))
hit = "yes"
item[:price] = theprice
item[:visits] = numvisits
end
end