diff --git a/app/controllers/events_controller.rb b/app/controllers/events_controller.rb index eee0b96..14f10db 100644 --- a/app/controllers/events_controller.rb +++ b/app/controllers/events_controller.rb @@ -14,6 +14,12 @@ def all end end + def show + @event = Event.with_all_rich_text.find_by!(slug: params[:slug]) + rescue ActiveRecord::RecordNotFound + redirect_to all_events_path, error: 'Event not found' + end + def past @events = Event.with_all_rich_text.past end diff --git a/app/views/events/_event.html.erb b/app/views/events/_event.html.erb index 658c8d2..cea8976 100644 --- a/app/views/events/_event.html.erb +++ b/app/views/events/_event.html.erb @@ -1,50 +1,93 @@
<% future = Time.zone.now < event.start_at %> - +
-
+

- <%= event.name %> + <%= link_to event.name, event_path(event) %>

- - + + <%= event.start_time %>
<% if future %> - + Upcoming <% else %> - + Past Event <% end %>
- + <% if future %> <%= link_to event.rsvp_link, class: "btn-primary", target: "_blank", rel: "noopener" do %> Join the event - + <% end %> <% end %>
-

- - - + + + Location

@@ -52,12 +95,21 @@ <%= event.location %>
-

- - + + Agenda

@@ -68,7 +120,6 @@
- <% if event.sponsor %>
@@ -76,14 +127,32 @@

Event Sponsor

<%= link_to event.sponsor_link, class: "group flex items-center gap-4 hover:opacity-80 transition-opacity", target: "_blank", rel: "noopener" do %> <% if event.sponsor_logo.present? %> - <%= image_tag "sponsors/#{event.sponsor_logo}", class: "max-h-16 max-w-[200px] object-contain", alt: event.sponsor %> + <%= image_tag "sponsors/#{event.sponsor_logo}", + class: "max-h-16 max-w-[200px] object-contain", + alt: event.sponsor %> <% else %> - + <%= event.sponsor.titleize %> <% end %> - - + + <% end %>
diff --git a/app/views/events/show.html.erb b/app/views/events/show.html.erb new file mode 100644 index 0000000..b8e5c9f --- /dev/null +++ b/app/views/events/show.html.erb @@ -0,0 +1,39 @@ +
+
+ + + +
+ <%= render partial: "events/event", locals: { event: @event } %> +
+
+
+ +<% content_for :page_title do %> + <%== @event.name %> +<% end %> diff --git a/test/controllers/events_controller_test.rb b/test/controllers/events_controller_test.rb index 3b0a978..bfd70e1 100644 --- a/test/controllers/events_controller_test.rb +++ b/test/controllers/events_controller_test.rb @@ -52,4 +52,11 @@ def setup assert_equal 0, events.count end + + test 'should redirect to events page if event is not found' do + get :show, params: { slug: 'nonexistent-event' } + + assert_response :found + assert_redirected_to all_events_path + end end