現在、railsにてゴルフスコアアプリ制作中ですが、リーダーボードに各プレーヤーが何番Hまでプレーしたか表示させる機能をつくっております。
ネックとしては、1Hスタートと10Hスタートのプレーヤーがいるので、1〜9Hと10〜18Hの2つにわけ、それぞれのMAX値をだして、MAX値から、下記のif文にて算出しようとしています。(下記、コントローラにてスコアが未入力のホールはwhereで省いております。)
ですが、現状何も表示されず、エラーも特にでなく、どこが間違っているのかわからず、困っております。
データベースは下の画像のような感じです。アドバイス等、宜しくお願い致します。
【追記】
表示されない原因がわかってきました。
@thru_1h_start = Score.where("created_at >= ?", Date.today).where(course: params[:course]).where(hole_number: 1..9).where.not(hole_score: nil).group(:round_id).maximum(:hole_number)
の中の.where.not(hole_score: nil)でそもそも弾いてしまっていたので、
VIEW側に書いてある、elsif a == nilに当てはまらなかったのかもしれません。
(ここのnillはあくまで、hole_scoreがnillということかと考えています。IN,OUT両方何かしらのhole_scoreが入力されていれば、正常に表示されました。)
なので、a[1]の配列の中身が空っぽかどうか判別できれば、うまくいきそうな気がします。
で、if文のところを、a[1].nil?としてみたのですが、変化ありませんでした。
erb
1 <% @thru_1h_start.zip(@thru_10h_start).each do|(a,b)| %> 2 <% if a[1] <= 9 && a[1] >= 1 && b[1] == 18 %> 3 <span>インスタートで、アウトプレイ中 <%= a[1] %></span> 4 <% elsif a[1] == nil && b[1] <= 18 && b[1] >= 10 %> 5 <span>インスタートで、インプレイ中 <%= b[1] %></span> 6 <% elsif a[1] == 9 && b[1] <= 18 && b[1] >= 10 %> 7 <span>アウトスタートで、インプレイ中 <%= b[1] %></span> 8 <% elsif a[1] <= 9 && a[1] >= 1 && b[1] = nil %> 9 <span>アウトスタートで、アウトプレイ中 <%= a[1] %></span> 10 <% elsif a[1] == 9 && b[1] == 18 %> 11 <span>Finish</span> 12 <% end %> 13 <% end %>
controller
1@thru_1h_start = Score.where("created_at >= ?", Date.today).where(course: params[:course]).where(hole_number: 1..9).where.not(hole_score: nil).group(:round_id).maximum(:hole_number) 2@thru_10h_start = Score.where("created_at >= ?", Date.today).where(course: params[:course]).where(hole_number: 10..18).where.not(hole_score: nil).group(:round_id).maximum(:hole_number) 3
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。