方法保持返回零

时间:2016-07-07 20:34:06

标签: arrays ruby

我有一个类似于以下

的数组
transactions = [{"id"=>"83Z...",
                 "date"=>"2016-05-24", 
                 "amount"=>6.22, 
                 "name"=>"DD/BR #346737 Q35"},
                {"id"=>"jzEo...", 
                 "date"=>"2016-05-24", 
                 "amount"=>8.37, 
                 "name"=>"Yl Statedivision Inc"}
                ]

我正在运行下面的方法来获取一个名称(没有重复名称)的数组,其中所有数字都从名称中删除。

在控制台中它可以正常工作但是当我尝试在我的实际应用程序上运行它时,filtered_names会返回为nil的数组,并导致该方法失败。我无法弄清楚出了什么问题。

 def transaction_names
  short_list = self.transactions.find_all { |t| Date.parse(t["date"]) >= 90.days.ago.to_date}
  filtered_names = short_list.map { |trans| trans[:name] }
  short_names = filtered_names.map { |name| name.gsub(/\d\s?/, "") }.uniq
  self.trans_names = short_names
  save
end

这应该返回

trans_names = ["DD/BR","Yl Statedivision Inc"]

1 个答案:

答案 0 :(得分:4)

您的原始哈希具有字符串的键,但您使用符号来获取名称。只需更改此行

即可
filtered_names = short_list.map { |trans| trans[:name] }

filtered_names = short_list.map { |trans| trans['name'] }