2014-03-03 67 views
-1

我試圖將隊名存儲在@wins@loss中,具體取決於與各自鍵相關的主客場比分。錯誤:「沒有將符號隱式轉換爲整數」

@leaderboard_info = [{ 
         home_team:"Patriots", 
         away_team: "Broncos", 
         home_score: 7, 
         away_score: 3 
         }, 
         #more info in hashes.........] 

@wins = [] 
@loss = [] 

@leaderboard_info.each do |game| 
    game.each do |key,value| 
    if value[:home_score] > value[:away_score] #7 > 3 
     @win << value[:home_team] #Patriots 
     @loss << value[:away_team] #Broncos 
    else 
     @loss << value[:home_team] 
     @win << value[:away_team] 
    end 
    end 
end 

,但我一直運行到這個錯誤

[]': no implicit conversion of Symbol into Integer (TypeError) 

if聲明應該抓住的7和3之後,應該推動由值存儲在球隊的名字的具體數值。爲什麼它不工作?我嘗試了key[home_score]等,但它仍然無法正常工作。

+0

這是實例變量的一大堆*,尤其是給出您的評論'#更多信息在哈希中'。你是否意識到所有這些信息都是爲​​你創建的每個對象而複製的? – Borodin

+0

另外,您已經定義了數組'@wins = []',但是您正在將信息推送到'@ win'。如果沒有看到程序的其餘部分,就不可能知道正確的代碼應該是什麼,但是根據您的顯示,它看起來非常匆忙地組裝起來。 – Borodin

回答

1

我想你應該刪除您的雙迴路,更改爲看起來像:

@leaderboard_info.each do |game| 
    if game[:home_score] > game[:away_score] 
    @win << game[:home_team] 
    @loss << game[:away_team] 
    else 
    @loss << game[:home_team] 
    @win << game[:away_team] 
    end 
end 
+0

Aguardientico,非常感謝,我終於開始工作了。對此,我真的非常感激。 –

+0

很高興能夠幫助你 – Aguardientico

1

的問題是,你在一個Hash,這將產生相互調用(如你的代碼所指出的)關鍵並且值爲每個記錄中的哈希值爲。所以當你調用value [:home_team]時,你在String上使用[]方法(「Patriots」)。 String上的[]方法需要Fixnum(用於分解字符串)。

相關問題