我有一个类似于以下
的数组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"]
答案 0 :(得分:4)
您的原始哈希具有字符串的键,但您使用符号来获取名称。只需更改此行
即可filtered_names = short_list.map { |trans| trans[:name] }
到
filtered_names = short_list.map { |trans| trans['name'] }