2014-02-28 2 views
0

나는 Lastfm레일 오류 메시지가 JSON 응답을 구문 분석 할 때

def get_albums 
     @albums = Array.new 
     @artistname.each do |name| 
      s = LastFM::Artist.get_top_albums(:artist => name, :limit => 1) 
      r = JSON.parse(s.to_json)['topalbums']['album']['name'] 
      @albums.push r      
      end 
    end 

이 방법은 잘 작동 예술가 최고 앨범을 얻고, 한 작가가 최고를 가지고 각 아티스트 앨범의 배열을 반환하는 방법을 앨범이 아니라면, Nil : NilClass에 대해 NoMethodError 미정의 메소드`[] '를 얻습니다.

내가하려고하는 것은이 NoMethodError를 전달하려고 구문 분석 할 때 검사를 추가하는 것이지만이를 파악할 수는 없습니다. 나는이 시도 :

나에게 내가이 문제를 해결할 수있는 방법을 정수 메시지

어떤 아이디어로 문자열을 변환 할 수있는 형식 오류를 제공

def get_albums 
     @albums = Array.new 
     @artistname.each do |name| 
      s = LastFM::Artist.get_top_albums(:artist => name, :limit => 1) 
      r = JSON.parse(s.to_json)['topalbums']['album']['name'] 
      if['topalbums']['album']['name'].empty? 
       @albums.push(@artistname + "does not have a top album") 
      else 
       @albums.push r      
      end 
       end 

    end 

?를 감사합니다

답변

0

+ 연산자는 루비의 concat 연산자가 아닙니다.

사용하려는 것은 << 연산자입니다.

@albums.push(@artistname << " does not have a top album") 
+0

건배 나는에 +를 변경 << 적이 있지만 난 여전히 코드 행에 정수로 문자열을 변환 할 수있는 형식 오류를 받고 있어요 경우 [ 'topalbums'] [ '앨범'] [ '이름'] .빈? – user3333211

+0

이 코드 줄에서 실제로 오류가 발생합니까? –

+0

또한 '[topalbums'] [ '앨범'] [ 'name']. 빈? '은 이해가되지 않습니다. 검색 할 해시를 지정해야합니다. –