2016-07-07 60 views
0

我有一個數組的數組,看起來像下面方法保持返回nil

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"] 

回答

4

你原來的哈希有是字符串鍵,但你用一個符號來取的名字。就在這條線

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

改變

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

感謝那些得到它。我錯過了。這讓我瘋狂! – SupremeA