Reputation: 3527
I am creating a rails app using ERB as my templating and keep getting this error: undefined method 'each' for nil:NilClass
.
My event.html.erb looks like:
<% @event.each do |event| %>
<a href="/registrations/new?level_id=1" class="btn"><%= event.date.strftime("%B %d %Y") %></a>
<br /><br />
<% end %>
My register_controller.rb looks like this:
class RegisterController < ApplicationController
def index
@event = Event.all
end
end
def event
@event = Event.find_by id: params["id"]
end
My event.rb model:
class Event < ActiveRecord::Base
end
My route is this: get 'register/event/:id' => 'register#event'
When I go to /register/event/1/ I receive the error message undefined method 'each' for nil:NilClass
. Any help would be greatly appreciated.
Thanks!
Upvotes: 0
Views: 464
Reputation: 1995
You are trying to iterate on a single object. Your event.html.erb
file should simply look like:
<a href="/registrations/new?level_id=1" class="btn">
<%= @event.date.strftime("%B %d %Y") %>
</a>
Also, it looks like that there is no object in the DB with your specified params[:id]
Also your controller, should look like this:
class RegisterController < ApplicationController
def index
@event = Event.all
end
def event
@event = Event.find_by id: params[:id]
end
end
Upvotes: 2
Reputation: 2663
Looks like you're asking it to iterate over a single instance.
could go with:
<a href="/registrations/new?level_id=1" class="btn">
<%= @event.date.strftime("%B %d %Y") if @event %>
</a>
<br /><br />
in event.html.erb
Upvotes: 0