0

ユーザーが今日の日付または特定の日付 (ユーザーが手動で URL に入力した場合) のスポーツ イベントを表示できるアプリがあります。ユーザーは、大まかに次のような UI コントロールを使用して、スポーツ イベントを日付別にナビゲートできます。

Tue Nov. 27  | Wed Nov. 28  | Thu Nov. 29

(日付は、中央の現在アクティブな日付を除くリンクです。)

この日付ナビ コントロールは、ほぼ毎日行われるスポーツ イベントに最適です。ユーザーは、イベントの空白のページをじっと見つめることはありません。ただし、NFL などのスポーツ イベントの場合、イベントは月曜日、木曜日、日曜日 (場合によっては土曜日) にのみ発生し、ユーザーが日付ナビゲーション UI コントロールを使用するのは面倒です。

私がやりたいのは、日付ナビゲーション UI リンクの作成の背後にあるロジックを変更して、イベントのある日付のみを含めることです。ロジックは次のようになります。

  • 今日の日付またはユーザーが指定した日付を指定して、イベントのある最も近い日付を返します (current_date)
  • current_date を指定して、イベントが発生した直近の日付 (previous_date) を見つけます。
  • current_date を指定して、イベントがある最も近い次の日付を見つけます (next_date)

したがって、NFL の場合、今日の日付が 11 月 27 日であると仮定すると、日付ナビゲーション UI コントロールは次のようになります。

Mon Nov. 25  | Thu Nov. 29  | Sun Dec. 2

特定の日付にイベントがあるかどうかを確認する方法はstart_time、DB のフィールドです。

コードなしで質問を投稿するのは好きではありませんが、DB に何度もアクセスすることなくこれにアプローチする方法についてのガイダンスを探しています。

注 #1: スポーツの日付をクリックすると、その日付のすべてのイベントが返されます。日付ナビは、個々のイベントの表示には使用されません。

4

1 に答える 1

1

特定のスポーツの次の 2 つの開始日と最新の開始日を取得するスコープ メソッドをモデルに作成します。3 つのレコードのみを返すように制限します。

コントローラーでこのスコープを使用して、これら 3 つのゲーム オブジェクトのみをフェッチします。コントローラー内のこれら 3 つのゲーム オブジェクトを使用して、それらをインスタンス変数 (例: render @games) としてビュー パーシャルに渡し、パーシャル内でジェネリック リンク コードを記述します<%= link_to "#{@games.start_time}", your_path(@game) %>。Rails は、コレクション内のオブジェクトの数 (3 つのゲーム) について、このパーシャルを自動的に反復します。

ソース: http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials

于 2012-11-28T07:04:31.467 に答える