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) %>
-
<% 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