Hey everybody,
I’m trying to make an example of a small networking site, and when I log
in a user, it should redirect and show his profile, but I get the
following error:
NoMethodError in User#index
Showing app/views/user/index.html.erb where line #5 raised:
undefined method `screen_name’ for nil:NilClass
Extracted source (around line #5):
2: Your basic information
3:
4:
5: - Screen name: <%= @user.screen_name %>
6: - Email: <%= @user.email %>
7: - Password: **********
8:
Thanks a lot to everybody!
On Sat, Aug 14, 2010 at 6:19 AM, Manu L. [email protected]
wrote:
I’m trying to make an example of a small networking site, and when I log
in a user, it should redirect and show his profile, but I get the
following error:
undefined method `screen_name’ for nil:NilClass
Extracted source (around line #5):
5:
Screen name: <%= @user.screen_name %>
It means you haven’t set @user to anything (or inadvertently set it to
nil); look at your controller code.
–
Hassan S. ------------------------ [email protected]
twitter: @hassan
Hassan S. wrote:
On Sat, Aug 14, 2010 at 6:19 AM, Manu L. [email protected]
wrote:
I’m trying to make an example of a small networking site, and when I log
in a user, it should redirect and show his profile, but I get the
following error:
undefined method `screen_name’ for nil:NilClass
Extracted source (around line #5):
5: �
Screen name: <%= @user.screen_name %>
It means you haven’t set @user to anything (or inadvertently set it to
nil); look at your controller code.
–
Hassan S. ------------------------ [email protected]
twitter: @hassan
Well, this is my code:
def login
@title = “Log in to RailsSpace”
if request.get?
@user = User.new(:remember_me => cookies[:remember_me] || “0”)
elsif params_posted?(:user)
@user = User.new(params[:user])
user =
User.find_by_screen_name_and_password(@user.screen_name,@user.password)
if user
user.login!(session)
if @user.remember_me? ? user.remember!(cookies) :
user.forget!(cookies)
flash[:notice] = “User #{user.screen_name} logged in!”
redirect_to_forwarding_url
else
@user.clear_password!
flash[:notice] = “Invalid screen name/password combination”
end
end
end
end
private
def redirect_to_forwarding_url
if (request_url = session[:protected_page])
session[:protected_page] = nil
redirect_to request_url
else
redirect_to :action => “index”
end
end
On Sat, Aug 14, 2010 at 6:46 AM, Manu L. [email protected]
wrote:
It means you haven’t set @user to anything (or inadvertently set it to
nil); look at your controller code.
Well, this is my code:
NoMethodError in User#index
Where is the method for index
?
–
Hassan S. ------------------------ [email protected]
twitter: @hassan
Hassan S. wrote:
On Sat, Aug 14, 2010 at 6:46 AM, Manu L. [email protected]
wrote:
It means you haven’t set @user to anything (or inadvertently set it to
nil); look at your controller code.
Well, this is my code:
NoMethodError in User#index
Where is the method for index
?
–
Hassan S. ------------------------ [email protected]
twitter: @hassan
Only this:
def index
@title = “RailsSpace User Hub”
end
On Sat, Aug 14, 2010 at 6:56 AM, Manu L. [email protected]
wrote:
It means you haven’t set @user to anything (or inadvertently set it to
nil); look at your controller code.
def index
@title = “RailsSpace User Hub”
end
Uh, OK. See any “@user” there ?
–
Hassan S. ------------------------ [email protected]
twitter: @hassan
Hassan S. wrote:
On Sat, Aug 14, 2010 at 6:56 AM, Manu L. [email protected]
wrote:
It means you haven’t set @user to anything (or inadvertently set it to
nil); look at your controller code.
def index
� �@title = “RailsSpace User Hub”
end
Uh, OK. See any “@user” there ?
–
Hassan S. ------------------------ [email protected]
twitter: @hassan
Hehe, ok, I just wrote
@user =
User.find_by_screen_name_and_email(@user.screen_name,@user.email)
but now, when I click the login button in order to log in my user, I
don’t get redirected
On Sat, Aug 14, 2010 at 7:23 AM, Manu L. [email protected]
wrote:
Hehe, ok, I just wrote
@user =
User.find_by_screen_name_and_email(@user.screen_name,@user.email)
That seems a little circular – you’re going to assign @user by using
attributes of @user ??
but now, when I click the login button in order to log in my user, I
don’t get redirected
I’d suggest checking your log file.
–
Hassan S. ------------------------ [email protected]
twitter: @hassan
On 14 August 2010 19:06, Manu L. [email protected] wrote:
@user = User.find(session[:user_id]), thanks a lot
The second one, I’m afraid that will need a little more research because
I can’t find anything in the development.log
If you can’t work out what is happening to the flow in your code it
can often be useful to use ruby-debug to break in to your code, where
you can inspect data and step through the code. See the Rails Guide
on debugging.
Colin
Hassan S. wrote:
On Sat, Aug 14, 2010 at 7:23 AM, Manu L. [email protected]
wrote:
Hehe, ok, I just wrote
@user =
User.find_by_screen_name_and_email(@user.screen_name,@user.email)
That seems a little circular – you’re going to assign @user by using
attributes of @user ??
but now, when I click the login button in order to log in my user, I
don’t get redirected
I’d suggest checking your log file.
–
Hassan S. ------------------------ [email protected]
twitter: @hassan
Alright man, the first was easy!
@user = User.find(session[:user_id]), thanks a lot
The second one, I’m afraid that will need a little more research because
I can’t find anything in the development.log
Thanks!
Colin L. wrote:
On 14 August 2010 19:06, Manu L. [email protected] wrote:
@user = User.find(session[:user_id]), thanks a lot
The second one, I’m afraid that will need a little more research because
I can’t find anything in the development.log
If you can’t work out what is happening to the flow in your code it
can often be useful to use ruby-debug to break in to your code, where
you can inspect data and step through the code. See the Rails Guide
on debugging.
Colin
Well, I tried, but I get lots of errors, even with ruby-debug19 -as I am
using Ruby 1.9.1-p249- but I keep getting errors and that prevent me
being able to use it:
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:>gem install ruby-debug19
Building native extensions. This could take a while…
ERROR: Error installing ruby-debug19:
ERROR: Failed to build gem native extension.
C:/Ruby191/bin/ruby.exe extconf.rb
checking for vm_core.h… *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
–with-opt-dir
–without-opt-dir
–with-opt-include
–without-opt-include=${opt-dir}/include
–with-opt-lib
–without-opt-lib=${opt-dir}/lib
–with-make-prog
–without-make-prog
–srcdir=.
–curdir
–ruby=C:/Ruby191/bin/ruby
–with-ruby-dir
–without-ruby-dir
–with-ruby-include
–without-ruby-include=${ruby-dir}/include
–with-ruby-lib
–without-ruby-lib=${ruby-dir}/lib
C:/Ruby191/lib/ruby/1.9.1/mkmf.rb:364:in try_do': The complier failed to genera te an executable file. (RuntimeError) You have to install development tools first. from C:/Ruby191/lib/ruby/1.9.1/mkmf.rb:433:in
try_cpp’
from C:/Ruby191/lib/ruby/1.9.1/mkmf.rb:811:in block in have_header' from C:/Ruby191/lib/ruby/1.9.1/mkmf.rb:670:in
block in
checking_for’
from C:/Ruby191/lib/ruby/1.9.1/mkmf.rb:276:in block (2 levels) in postp one' from C:/Ruby191/lib/ruby/1.9.1/mkmf.rb:250:in
open’
from C:/Ruby191/lib/ruby/1.9.1/mkmf.rb:276:in block in postpone' from C:/Ruby191/lib/ruby/1.9.1/mkmf.rb:250:in
open’
from C:/Ruby191/lib/ruby/1.9.1/mkmf.rb:272:in postpone' from C:/Ruby191/lib/ruby/1.9.1/mkmf.rb:669:in
checking_for’
from C:/Ruby191/lib/ruby/1.9.1/mkmf.rb:810:in have_header' from extconf.rb:15:in
block in ’
from
C:/Ruby191/lib/ruby/gems/1.9.1/gems/ruby_core_source-0.1.4/lib/ruby
_core_source.rb:18:in call' from C:/Ruby191/lib/ruby/gems/1.9.1/gems/ruby_core_source-0.1.4/lib/ruby _core_source.rb:18:in
create_makefile_with_core’
from extconf.rb:20:in `’
Gem files will remain installed in
C:/Ruby191/lib/ruby/gems/1.9.1/gems/linecache
19-0.5.11 for inspection.
Results logged to
C:/Ruby191/lib/ruby/gems/1.9.1/gems/linecache19-0.5.11/ext/tra
ce_nums/gem_make.out
C:>