How Should I Fix a NoMethodError?

I am getting a NoMethodError in the show.rhtml file around an
@story.user.login variable. But I checked the controller and the
rhtml file and it looks like things are ok. This is the error message:

NoMethodError in Story#show

Showing app/views/story/show.rhtml where line #20 raised:

You have a nil object when you didn’t expect it!
The error occurred while evaluating nil.login
Extracted source (around line #20):

17:


18:


19: Submitted by:
20: <%= @story.user.login %>
21:


22:

23: <%= link_to_remote ‘shove it’,
RAILS_ROOT: script/…/config/…

Application Trace | Framework Trace | Full Trace
#{RAILS_ROOT}/app/views/story/show.rhtml:20:in
_run_rhtml_47app47views47story47show46rhtml' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action_view/ base.rb:326:insend’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action_view/
base.rb:326:in compile_and_render_template' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action_view/ base.rb:301:inrender_template’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action_view/
base.rb:260:in render_file' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/ action_controller/base.rb:806:inrender_file’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/
action_controller/base.rb:711:in render_with_no_layout' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/ action_controller/layout.rb:247:inrender_without_benchmark’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/
action_controller/benchmarking.rb:50:in render' /usr/local/lib/ruby/1.8/benchmark.rb:293:inmeasure’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/
action_controller/benchmarking.rb:50:in render' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/ action_controller/base.rb:1096:inperform_action_without_filters’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/
action_controller/filters.rb:632:in call_filter' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/ action_controller/filters.rb:634:incall_filter’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/
action_controller/filters.rb:638:in call_filter' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/ action_controller/filters.rb:438:incall’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/
action_controller/filters.rb:637:in call_filter' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/ action_controller/filters.rb:619:inperform_action_without_benchmark’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/
action_controller/benchmarking.rb:66:in
perform_action_without_rescue' /usr/local/lib/ruby/1.8/benchmark.rb:293:inmeasure’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/
action_controller/benchmarking.rb:66:in
perform_action_without_rescue' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/ action_controller/rescue.rb:83:inperform_action’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/
action_controller/base.rb:430:in send' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/ action_controller/base.rb:430:inprocess_without_filters’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/
action_controller/filters.rb:624:in
process_without_session_management_support' /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/ action_controller/session_management.rb:114:inprocess’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/
action_controller/base.rb:330:in process' /usr/local/lib/ruby/gems/1.8/gems/rails-1.2.2/lib/dispatcher.rb:41:indispatch’
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.2/lib/webrick_server.rb:
113:in handle_dispatch' /usr/local/lib/ruby/gems/1.8/gems/rails-1.2.2/lib/webrick_server.rb: 79:inservice’
/usr/local/lib/ruby/1.8/webrick/httpserver.rb:104:in service' /usr/local/lib/ruby/1.8/webrick/httpserver.rb:65:inrun’
/usr/local/lib/ruby/1.8/webrick/server.rb:173:in start_thread' /usr/local/lib/ruby/1.8/webrick/server.rb:162:instart’
/usr/local/lib/ruby/1.8/webrick/server.rb:162:in start_thread' /usr/local/lib/ruby/1.8/webrick/server.rb:95:instart’
/usr/local/lib/ruby/1.8/webrick/server.rb:92:in each' /usr/local/lib/ruby/1.8/webrick/server.rb:92:instart’
/usr/local/lib/ruby/1.8/webrick/server.rb:23:in start' /usr/local/lib/ruby/1.8/webrick/server.rb:82:instart’
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.2/lib/webrick_server.rb:
63:in dispatch' /usr/local/lib/ruby/gems/1.8/gems/rails-1.2.2/lib/commands/servers/ webrick.rb:59 /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:ingem_original_require’
/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
require' /usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.1/lib/ active_support/dependencies.rb:495:inrequire’
/usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.1/lib/
active_support/dependencies.rb:342:in new_constants_in' /usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.1/lib/ active_support/dependencies.rb:495:inrequire’
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.2/lib/commands/server.rb:
39
/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in
gem_original_require' /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:inrequire’
script/server:3
Request

Parameters: {“permalink”=>“my-shiny-weblog”}

Show session dump

Response

Headers: {“cookie”=>[], “Cache-Control”=>“no-cache”}

essentially your @story doesn’t have a user. Either force the story to
have
a user, or add a condition to your printout statement.

<%= @story.user.login unless @story.user.nil? %>

you will receive this message any time you try to call a method against
a
nil object so it is important to either assign a blank user to your
story
any time you view this page, or start checking that the user isn’t nil,
like
the sample above.

On 4/12/07, Zkidd [email protected] wrote:

You have a nil object when you didn’t expect it!
RAILS_ROOT: script/…/config/…
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action_view/
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/
action_controller/filters.rb:438:in call'perform_action_without_rescue’
action_controller/session_management.rb:114:in process' /usr/local/lib/ruby/1.8/webrick/server.rb:173:instart_thread’
webrick.rb:59
/usr/local/lib/ruby/gems/1.8/gems/rails-1.2.2/lib/commands/server.rb:
Show session dump

Response

Headers: {“cookie”=>[], “Cache-Control”=>“no-cache”}


Mike W.
Web D.
UW-Eau Claire

Ok. . . and I am really new here, but first where would I find my
“printout statement” and second, I raked my databases and got a rake
aborted! uninitialized constant CreateUse as a result. Are these two
issues related? Thanks for your help.

when I say printout statement, I’m referring to any time that you use
<%=
“something” %> since it prints a result to your html.

as far as your rake problem goes, it sounds like maybe your rake file
isn’t
named correctly. if your file name is 001_create_users.rb, within that
file
the class name must be CreateUsers. most likely your file is named
(ignoring the version number) 001_create_use.rb, so it’s looking for a
class
name of CreateUse within the file. you need to make sure that the class
name and file name agree.

On 4/12/07, Zkidd [email protected] wrote:

<%= @story.user.login unless @story.user.nil? %>

Showing app/views/story/show.rhtml where line #20 raised:
22:


/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/action_view/
action_controller/benchmarking.rb:50:in render' action_controller/filters.rb:638:incall_filter’
/usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.2/lib/
process_without_session_management_support' /usr/local/lib/ruby/1.8/webrick/httpserver.rb:104:inservice’
63:in `dispatch’
/usr/local/lib/ruby/gems/1.8/gems/activesupport-1.4.1/lib/
Parameters: {“permalink”=>“my-shiny-weblog”}
UW-Eau Claire


Mike W.
Web D.
UW-Eau Claire

Wow… . . that worked! I replaced your line with mine in the rhtml.
But I am still curious about the rake thing. Thanks.