From 0f6d75b1e85f3e636ba09a29c63726abdecde472 Mon Sep 17 00:00:00 2001
From: kbe
Date: Thu, 4 Sep 2025 01:12:59 +0200
Subject: [PATCH] fix: Resolve tickets controller Event lookup issues
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- Fix Event attribute name from starts_at to start_time in orders/new view
- Update TicketsController#set_event to use session[:event_id] as fallback when params[:id] is not available
- Remove duplicate Event.find call in tickets#create action
- Fix form submission path in tickets/new to use parameterless route
- Add debug logging to troubleshoot event ID resolution
- Update redirect paths to use proper route helpers
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude
---
app/controllers/tickets_controller.rb | 24 ++++++++++++++++++------
app/views/orders/new.html.erb | 4 ++--
app/views/tickets/new.html.erb | 2 +-
3 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/app/controllers/tickets_controller.rb b/app/controllers/tickets_controller.rb
index 2ccd1e9..de943c1 100644
--- a/app/controllers/tickets_controller.rb
+++ b/app/controllers/tickets_controller.rb
@@ -46,11 +46,9 @@ class TicketsController < ApplicationController
@cart_data = session[:pending_cart] || {}
if @cart_data.empty?
- redirect_to event_path(params[:slug], params[:id]), alert: "Aucun billet sélectionné"
+ redirect_to event_path(@event.slug, @event), alert: "Aucun billet sélectionné"
return
end
-
- @event = Event.includes(:ticket_types).find(params[:id])
success = false
ActiveRecord::Base.transaction do
@@ -89,12 +87,12 @@ class TicketsController < ApplicationController
session.delete(:pending_cart)
redirect_to checkout_order_path(@order)
else
- redirect_to ticket_new_path(@event.slug, @event.id)
+ redirect_to ticket_new_path
end
rescue => e
error_message = e.message.present? ? e.message : "Erreur inconnue"
flash[:alert] = "Une erreur est survenue: #{error_message}"
- redirect_to ticket_new_path(params[:slug], params[:id])
+ redirect_to ticket_new_path
end
# Redirect to order-based checkout
@@ -147,7 +145,21 @@ class TicketsController < ApplicationController
private
def set_event
- @event = Event.includes(:ticket_types).find(params[:id])
+ event_id = params[:id] || session[:event_id]
+
+ Rails.logger.debug "TicketsController#set_event - params[:id]: #{params[:id].inspect}, session[:event_id]: #{session[:event_id].inspect}"
+
+ unless event_id
+ Rails.logger.error "TicketsController#set_event - No event ID found"
+ redirect_to events_path, alert: "Aucun événement spécifié"
+ return
+ end
+
+ @event = Event.includes(:ticket_types).find(event_id)
+ Rails.logger.debug "TicketsController#set_event - Found event: #{@event.id} - #{@event.name}"
+ rescue ActiveRecord::RecordNotFound
+ Rails.logger.error "TicketsController#set_event - Event not found with ID: #{event_id}"
+ redirect_to events_path, alert: "Événement non trouvé"
end
def ticket_params
diff --git a/app/views/orders/new.html.erb b/app/views/orders/new.html.erb
index ff4e2eb..df85ca3 100644
--- a/app/views/orders/new.html.erb
+++ b/app/views/orders/new.html.erb
@@ -14,9 +14,9 @@
<%= @event.name %>
<%= @event.venue_name %>
- <% if @event.starts_at %>
+ <% if @event.start_time %>
- <%= @event.starts_at.strftime("%d/%m/%Y à %H:%M") %>
+ <%= @event.start_time.strftime("%d/%m/%Y à %H:%M") %>
<% end %>
diff --git a/app/views/tickets/new.html.erb b/app/views/tickets/new.html.erb
index dc6398e..1893653 100755
--- a/app/views/tickets/new.html.erb
+++ b/app/views/tickets/new.html.erb
@@ -98,7 +98,7 @@
les billets.
- <%= form_with url: ticket_create_path(@event.slug, @event), method: :post, local: true, class: "space-y-8" do |form| %>
+ <%= form_with url: ticket_create_path, method: :post, local: true, class: "space-y-8" do |form| %>
<% if @tickets_needing_names.any? %>