イベント一覧サイトを構築しています。現在、各イベントは特定の日付で入力され、順番に表示されます....簡単です!ただ、フェスや演劇など複数の日程にまたがるイベントの場合はどう対応するかを考える必要があります。日付ごとに何度もイベントに参加することは、明らかに最善の選択肢ではありません。開始日と終了日を設定できると思っていましたが、開始日と終了日の間の日付のインデックスにイベントを表示する方法がわかりません。これはおそらく非常に単純ですが、これで間違った道を歩む可能性がある前に、経験豊富な人のためにいくつかのガイダンスを求めたいと思いました.
現時点でのイベント スキーマ:
create_table "events", :force => true do |t|
t.date "event_date"
t.string "headline"
t.text "info"
t.integer "event_type_id"
t.integer "venue_id"
t.datetime "created_at"
t.datetime "updated_at"
t.string "event_image_file_name"
t.string "event_image_content_type"
t.integer "event_image_file_size"
t.datetime "event_image_updated_at"
t.boolean "free"
end
そして、私の Event Controller インデックスは次のことを行います。
@events = Event.paginate(:page => params[:page], :per_page => 12).find(:all, :conditions => ['event_date >= ?', Date.today], :order => "event_date")
編集: イベント コントローラー インデックス メソッドの次の行によって生成された日付ヘッダーを使用してイベントをリストしていることを指摘する必要がありました。
@events_dates = @events.group_by { |e| e.event_date }
ビューは次のようなものです。
<% @events_dates.sort.each do |event_dates, events| %>
<div class="well">
<h3>
<% if event_dates == Date.today %>
Today
<% elsif event_dates == Date.today + 1 %>
Tomorrow
<% else %>
<%= event_dates.to_date.to_formatted_s(:my_format) %>
<% end %>
</h3>
</div>
<%= render events %>
<% end %>
イベントのパーシャルには、イベントの見出し、情報などが含まれます。
したがって、日付ヘッダーをループする方法を変更する必要があると思います。データベースからイベントの日付をグループ化してループする代わりに、ほとんどの場合、暦日をループして、event_start_date と event_end_date に基づいてそれらの日付にイベントが発生するかどうかを確認する必要があります。それにアプローチする方法はありますか?