2014-03-03 3 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 

는하지만 난 if 문 7 3. 그 후에는 값으로 저장되어있는 팀 이름을 밀어해야의 특정 값을 잡는해야이 오류

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

으로 계속 실행. 왜 작동하지 않는거야? key[home_score] 등으로 시도했지만 여전히 작동하지 않습니다.

+0

이것은 인스턴스 변수의 * lot *입니다. 특히'#more info in hashes '라는 주석이 있습니다. 당신이 만든 모든 객체에 대해 모든 정보가 복제된다는 것을 알고 계십니까? – 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

문제는 당신이 얻을 수 해시, 각 호출하고 있다는 것입니다 키를 (코드는 지적으로) 에 대한 값은 해시에 각각입니다. 따라서 value [: home_team]을 호출하면 String ("Patriots")에서 [] 메서드를 사용하게됩니다. String의 [] 메소드는 Fixnum (문자열 분리)을 필요로합니다.

관련 문제