문제

나는 리그 시스템을 구축하고 현재 그것을 저장소 및 업데이트 선수'elo 점수에 따라 결과입니다.지금,나를 추가하려고 시도하에서'HighCharts'표시 플레이어 elo 점수를 통해 시즌에는 달콤하고 선 차트.누군가가 제안을 사용 Papertrail 업데이트를 저장하고 난 가지고있는 모든 설치됩니다.

지금 여기에 내 문제를 파악하는 방법을 뱉어 사용자 elo_score 버전에 배열을 쉽게'HighCharts'사용합니다.나를 얻을 수 있는 마지막 업데이트 elo_score:

Last updated score = <%= @player.versions.last.reify.elo_score %> 

그러나 나는 찾을 수 없는 것 구문을 뱉 모든 도'버전은'for'elo_score'.뭔가"1000, 1020, 1043, 1020".

나도:

<%= @player.versions.map { |version| version.reify.elo_score} %>

하지만 이를 제공"내게 정의되지 않은 방법`elo_score 위해'nil:NilClass".동 <%=@플레이어입니다.버전입니다.지도{|전 버전입니다.이를 구체화하%>뱉어 모든 에 정보를 기록하고 분명하지만 elo_score.

사람이 도움이 될 수 있습니다?죄송하는 경우 내가 만들어지지 않 이 명확하고,나는 절대적인 브랜드에 새로운 레일 이것은 그냥 재미있는 프로젝트에서는 내가 돌풍!

감사합니다.

도움이 되었습니까?

해결책

당신이 무엇을 했는지 여기:

@player.versions.map { |version| version.reify.elo_score }

완벽하게 괜찮을 모든 사람들을 가지고 점수에 넣고 훌륭한 기능들을 가지고 있습니다.문제는 당신이(가 nil:NilClass 재료)오고 있기 때문에 적어도 하나 reify 은 전무합니다.즉,일부 버전에 있지 않는 구체.

는 경우 각 버전은 가정을 구체화하는,추가해야 하는 모델로 검증하고 찾을 수 있는 코드에서는 이를 구체화되고 있 설정하시고 왜 그것은 전무합니다.

도 괜찮을 경우 버전을 전무 이를 구체화하는 작업을 수행할 수 있습니다 그것은 번호의 방법이지만,간단하고 명시적인 방법은 다음과 같이 보일 것입니다.

elo_scores = []
@player.versions.each do |version|
    unless version.reify.nil?
        elo_scores << version.reify.elo_score
    end
end

나는 제안이에서 다음과 같이 메서드 get_elo_scores,그리고 당신은 수 있다 더 쉽게 그것을 부과 같:

@player.get_elo_scores

편집 정화를 위해서 주석:

귀하의 사용자 모델(또는 플레이어 모델,어떤 당신은 그것을 이름)방법이 있어야 한하는 다음과 같습니다:

def get_elo_scores
    elo_scores = []
    self.versions.each do |version|
        unless version.reify.nil?
            elo_scores << version.reify.elo_score
        end
    end
    return elo_scores
end

나는에 대해 사과하지 않는 이 명확하게,하지만 당신은에 액세스할 수 없 @player 이 방법이기 때문에 존재하는 컨텍스트에서 당신의 컨트롤러고 볼 수 있습니다.위의 지금은 적절한 인스턴스가 방법:그것은 전화 .versions 에 따라 자신이고,나머지는 괜찮습니다.또한 추가 명시적인 반출합니다.

이제 당신이 할 수있을 것입 통화 @player.get_elo_scores 에 어떤 사용자(또는 플레이어)객체입니다.

도움이 됐으면 좋겠어!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top