質問

リーグシステムを構築しています。結果に応じてプレイヤーのELOスコアを保存して更新します。さて、私は「ハイチャート」を追加して、甘いラインチャートの中で季節のプレーヤーのエロスコアを表示しようとしています。誰かがPaperTrailを使ってアップデートを保存することをお勧めします、そして私はすべてインストールされています。

今ここに問題があります、私は「ハイチート」を使うのが簡単なアレイのelo_scoreのバージョンを使い果たす方法を見つけることはできません。 elo_scoreの最後のアップデートを取得できます:

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

しかし、私は all>「elo_score」の「バージョン」を吐き出すための構文を見つけることはできません。 "1000,1020,1043,1020"のようなもの。

私も試しました:

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

しかしこれは私に「未定義の方法」を与えます.Nil:NilClassのための「Elo_Score」。 <%= @ Player.versions.map {| version |}バージョン。%> all 情報を登録し、明らかにelo_scoreだけではありません。

誰もが助けになることができますか?申し訳ありません

ありがとうございました!

役に立ちましたか?

解決

ここに何をしたこと:

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

これらのスコアをすべて撮り、それらをアレイに入れるには完全に問題ありません。少なくとも1つのnil:NilClassがNILであるため、取得している問題が発生しています。つまり、いくつかのバージョンにはReifyがありません。

各バージョンがReifyを持つことになっている場合は、モデル検証としてそれを追加して、Reifyが設定されているコードを見つけて見つけてください。

版が困難になることができれば、あなたはそれにいくつかの方法を達成することができました、しかし直接的で明示的な方法はこのように見えるでしょう:

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

これをreifyのように、方法に入れることをお勧めします。その後、次のようにもっと簡単に呼び出すことができます。

@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
.

これを中止しないことをお詫び申し上げます。上記は適切なインスタンスメソッドです.get_elo_scoresそれ自体が呼び出され、残りは大丈夫です。私はまた最後に明示的な戻り呼び出しを追加しました。

今度は、任意のユーザー(またはプレーヤー)オブジェクトの@playerを呼び出すことができます。

助けを願っています!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top