# Events controller - Public event listings and individual event display # # This controller manages public event browsing and displays individual events # with their associated ticket types. No authentication required for public browsing. class EventsController < ApplicationController # No authentication required for public event viewing before_action :authenticate_user!, only: [] before_action :set_event, only: [ :show ] # Display paginated list of upcoming published events # # Shows events in published state, ordered by start time ascending # Includes event owner information and supports Kaminari pagination def index @events = Event.includes(:user).upcoming.page(params[:page]).per(12) end # Display individual event with ticket type information # # Shows complete event details including venue information, # available ticket types, and allows users to add tickets to cart def show # Event is set by set_event callback with ticket types preloaded # Template will display event details and ticket selection interface end private # Find and set the current event with eager-loaded associations # # Loads event with ticket types to avoid N+1 queries # Raises ActiveRecord::RecordNotFound if event doesn't exist def set_event @event = Event.includes(:ticket_types).find(params[:id]) end end