diff --git a/app/controllers/tickets_controller.rb b/app/controllers/tickets_controller.rb index 704e2bd..93706ed 100644 --- a/app/controllers/tickets_controller.rb +++ b/app/controllers/tickets_controller.rb @@ -6,7 +6,6 @@ class TicketsController < ApplicationController before_action :authenticate_user!, only: [ :payment_success, :payment_cancel, :show, :ticket_view, :download_ticket ] before_action :set_event, only: [ :checkout, :retry_payment ] - # Redirect to order-based checkout def checkout # Check for draft order @@ -94,20 +93,20 @@ class TicketsController < ApplicationController # Generate PDF using Grover begin Rails.logger.info "Starting PDF generation for ticket ID: #{@ticket.id}" - - # Render the HTML template + + # Render the HTML template html = render_to_string( partial: "tickets/pdf_ticket", layout: false, locals: { ticket: @ticket } ) - + Rails.logger.info "HTML template rendered successfully, length: #{html.length}" - + # Try to load and use Grover begin Rails.logger.info "Attempting to load Grover gem" - + # Try different approaches to load grover begin require 'bundler' @@ -116,11 +115,11 @@ class TicketsController < ApplicationController rescue => bundler_error Rails.logger.warn "Bundler require failed: #{bundler_error.message}" end - + # Direct path approach using bundle show grover_gem_path = `bundle show grover`.strip grover_path = File.join(grover_gem_path, 'lib', 'grover') - + if File.exist?(grover_path + '.rb') Rails.logger.info "Loading Grover from direct path: #{grover_path}" require grover_path @@ -128,9 +127,9 @@ class TicketsController < ApplicationController Rails.logger.error "Grover not found at path: #{grover_path}" raise LoadError, "Grover gem not available at expected path" end - + Rails.logger.info "Creating Grover instance with options" - grover = Grover.new(html, + grover = Grover.new(html, format: 'A6', margin: { top: '10mm', @@ -144,12 +143,12 @@ class TicketsController < ApplicationController launch_args: ['--no-sandbox', '--disable-setuid-sandbox'] # For better compatibility ) Rails.logger.info "Grover instance created successfully" - + pdf_content = grover.to_pdf Rails.logger.info "PDF generated successfully, length: #{pdf_content.length}" - + # Send PDF as download - send_data pdf_content, + send_data pdf_content, filename: "ticket_#{@ticket.id}_#{@ticket.event.name.parameterize}.pdf", type: "application/pdf", disposition: "attachment" @@ -157,7 +156,7 @@ class TicketsController < ApplicationController Rails.logger.error "Failed to load Grover: #{grover_error.message}" # Fallback: return HTML instead of PDF send_data html, - filename: "ticket_#{@ticket.id}_#{@ticket.event.name.parameterize}.html", + filename: "ticket_#{@ticket.id}_#{@ticket.event.name.parameterize}.html", type: "text/html", disposition: "attachment" end