I am around page 329 when I noticed this error. It seems like it is not happy with my user login information. This error appears when I try to view the “upcoming stories” page.
Thanks
NoMethodError in Stories#bin
Showing app/views/stories/_story.html.erb where line #4 raised:
You have a nil object when you didn't expect it!
The error occurred while evaluating nil.login
Extracted source (around line #4):
1: <% div_for(story) do %>
2: <h3><%= link_to story.name, story %></h3>
3: <p>
4: Submitted by: <%= story.user.login %> |
5: Score: <%= story.votes_count %>
6: </p>
7: <% end %>
Trace of template inclusion: app/views/stories/index.html.erb
RAILS_ROOT: /Users/slam/Code/shovell
Application Trace | Framework Trace | Full Trace
/Users/slam/Code/shovell/app/views/stories/_story.html.erb:4:in `_run_erb_app47views47stories47_story46html46erb_locals_object_story_story_counter'
/Users/slam/Code/shovell/app/views/stories/_story.html.erb:1:in `_run_erb_app47views47stories47_story46html46erb_locals_object_story_story_counter'
/Users/slam/Code/shovell/app/views/stories/index.html.erb:4:in `_run_erb_app47views47stories47index46html46erb'
/Users/slam/Code/shovell/app/controllers/stories_controller.rb:24:in `bin'
The problem is that story.user is returning a nil object. When Ruby then looks for the method ‘login’ on the object returned by story.user it can’t find that method - the nil object doesn’t have one.
Basically, the error means you don’t have a user associated to the story. This could happen because of one of the following:
No user has been assigned to the story
The user that was assigned to the story has been deleted or altered in a way that broke the association.
The code that associates users with with stories is broken.
You could handle the problem by altering line 4 to: