# NoMethodError

**URL:** <https://www.ruby-forum.com/t/nomethoderror/136097>\
**Category:** Rails\
**Created:** [April 28, 2008, 10:04pm UTC](https://www.ruby-forum.com/t/nomethoderror/136097 "2008-04-28T22:04:55Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![manish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/a6a055/32.png) [@manish](https://www.ruby-forum.com/u/manish)\
**Post date:** [April 28, 2008, 10:04pm UTC](https://www.ruby-forum.com/t/nomethoderror/136097/1 "2008-04-28T22:04:55Z")

</div>

I have created a simple login form…

form is like this…  
\<% form\_tag :controller =\> “user”, :action =\> “login\_submit” do %\>

Username: &nbsp;

Password: &nbsp;

  

\<%= submit\_tag “Login”%\>  
\<% end %\>

* * *

METHOD IN USER CONTROLLER IS LIKE THIS…

def login\_submit  
if session[‘user’]  
@logged\_in = true  
else  
@logged\_in = false  
end  
@user = User.new(@params[‘user’])  
if @session[‘user’] = User.authenticate(@params[‘user’][‘username’],  
@params[‘user’][‘password’])  
flash[:notice] = l(:user\_login\_succeeded)  
redirect\_to :action =\> ‘welcome’  
else  
@login = @params[‘user’][‘login’]  
flash.now[:notice] = l(:user\_login\_failed)  
end  
end

* * *

---

<div class="post-metadata">

**Author:** ![manish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/a6a055/32.png) [@manish](https://www.ruby-forum.com/u/manish)\
**Post date:** [April 28, 2008, 10:19pm UTC](https://www.ruby-forum.com/t/nomethoderror/136097/2 "2008-04-28T22:19:28Z")

</div>

On Apr 28, 9:04 pm, Manish N. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> ```
> if @session['user'] = User.authenticate(@params['user']['username'],
> 
> ```
> 
> @params[‘user’][‘password’])

Don’t use @session, @params etc. They were removed. Use session/params  
instead.

Fred

---

<div class="post-metadata">

**Author:** ![manish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/a6a055/32.png) [@manish](https://www.ruby-forum.com/u/manish)\
**Post date:** [April 29, 2008, 1:38am UTC](https://www.ruby-forum.com/t/nomethoderror/136097/3 "2008-04-29T01:38:01Z")

</div>

That looks like a good form 🙂

On Mon, Apr 28, 2008 at 2:04 PM, Manish N.

---

<div class="post-metadata">

**Author:** ![manish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/a6a055/32.png) [@manish](https://www.ruby-forum.com/u/manish)\
**Post date:** [April 29, 2008, 8:10pm UTC](https://www.ruby-forum.com/t/nomethoderror/136097/4 "2008-04-29T20:10:25Z")

</div>

Frederick C. wrote:

> On Apr 28, 9:04ï¿½pm, Manish N. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
> wrote:
> 
> > ï¿½ ï¿½ if @session[‘user’] = User.authenticate(@params[‘user’][‘username’],  
> > @params[‘user’][‘password’])
> 
> Don’t use @session, @params etc. They were removed. Use session/params  
> instead.
> 
> Fred

nothing happen…  
i just remove wht u say …but still same error…

NoMethodError in UserController#login\_submit

You have a nil object when you didn’t expect it!  
You might have expected an instance of ActiveRecord::Base.  
The error occurred while evaluating nil.[]

---

<div class="post-metadata">

**Author:** ![manish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/a6a055/32.png) [@manish](https://www.ruby-forum.com/u/manish)\
**Post date:** [April 29, 2008, 8:23pm UTC](https://www.ruby-forum.com/t/nomethoderror/136097/5 "2008-04-29T20:23:01Z")

</div>

On 29 Apr 2008, at 19:10, Manish N. wrote:

> > params  
> > You might have expected an instance of ActiveRecord::Base.  
> > The error occurred while evaluating nil.[]

Learn to understand these errors: what line did it occur on. What is  
the object that is null and why is it null etc… Step through the  
code with the debugger.

Fred

---

<div class="post-metadata">

**Author:** ![manish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/a6a055/32.png) [@manish](https://www.ruby-forum.com/u/manish)\
**Post date:** [April 30, 2008, 8:14pm UTC](https://www.ruby-forum.com/t/nomethoderror/136097/6 "2008-04-30T20:14:24Z")

</div>

Frederick C. wrote:

> On 29 Apr 2008, at 19:10, Manish N. wrote:
> 
> > > params  
> > > You might have expected an instance of ActiveRecord::Base.  
> > > The error occurred while evaluating nil.[]
> 
> Learn to understand these errors: what line did it occur on. What is  
> the object that is null and why is it null etc… Step through the  
> code with the debugger.
> 
> Fred

hi…  
this code is running in my office pc…but whn i run same code in home  
pc…  
it shows error…can u tell me wht the main reason…

---

<div class="post-metadata">

**Author:** ![manish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/a6a055/32.png) [@manish](https://www.ruby-forum.com/u/manish)\
**Post date:** [May 1, 2008, 12:43am UTC](https://www.ruby-forum.com/t/nomethoderror/136097/7 "2008-05-01T00:43:42Z")

</div>

On Apr 30, 2008, at 2:14 PM, Manish N. wrote:

> > Fred
> 
> hi…  
> this code is running in my office pc…but whn i run same code in  
> home  
> pc…  
> it shows error…can u tell me wht the main reason…

Send me your pc and I’d take a look 😉

Seriously, there’s no way that anyone here can help you with so little  
information. You’ll have to work it out on your own or trade excess  
punctuation for more detail.

-Rob

Rob B. [http://agileconsultingllc.com](http://agileconsultingllc.com)  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![manish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/a6a055/32.png) [@manish](https://www.ruby-forum.com/u/manish)\
**Post date:** [May 1, 2008, 1:46pm UTC](https://www.ruby-forum.com/t/nomethoderror/136097/8 "2008-05-01T13:46:05Z")

</div>

What Prasad said! (Please don’t double-post your issues)

-Rob

On May 1, 2008, at 2:37 AM, Prasad wrote:

> # # # # Authenticate method # #
> 
> def self.authenticate(login, pass)  
> find(:first, :conditions=\>[“login = ? AND password = ?”, login,  
> pass]) # login, password are your users table fields…  
> end
> 
> end

---

<div class="post-metadata">

**Author:** ![manish](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/a6a055/32.png) [@manish](https://www.ruby-forum.com/u/manish)\
**Post date:** [May 1, 2008, 6:16am UTC](https://www.ruby-forum.com/t/nomethoderror/136097/9 "2008-05-01T06:16:57Z")

</div>

HERE IS ONE LOOK OF MY FORM WITH CONTROLLER & MODEL & FORM & DATABASE

HERE IS MY ERROR -----

NoMethodError in UserController#login\_submit

undefined method `authenticate’ for #Class:0x36f6cbc

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-2.0.2/lib/active\_record/base.rb:1532:in  
`method_missing' app/controllers/user_controller.rb:34:in`login\_submit’

* * *

HERE IS MY USER CONTROLLER-----

class UserController \< ApplicationController

layout “home”

def list  
@user = User.find(:all)  
end

def new  
@user = User.new  
end

def create  
@user = User.new(params[:user])  
if @user.save  
redirect\_to :action =\> ‘list’  
else  
redirect\_to :action =\> ‘new’  
end  
end

```
def login
  @user = User.new
  @user.username = params[:user][:username]
end

```

## def login\_submit username = params[:user][:username] password = params[:user][:password] if session[“user”] = User.authorize(username, password) @user = User.find(session[“user”].id) @user.first\_login = 1 @user.save flash[:notice] = “You are now logged in” redirect\_to :action =\> ‘create’ else flash[:error] = “Incorrect username and/or password” redirect\_to :action =\> ‘list’ end end end

HERE IS MY USER MODEL—

class User \< ActiveRecord::Base  
validates\_presence\_of :username, :message=\>“User Name will not b  
blank”  
validates\_presence\_of :password, :message=\>“Password cannot be blank”  
end

* * *

HERE IS MY FORM ----

# Login Section
\<% form\_tag :controller =\> "user", :action =\> "login\_submit" do %\>

Username: &nbsp;\<input

id=“user\_username” name=“user[username]” size=“15” type=“text” /\>

Password: &nbsp;\<input

id=“user\_password” name=“user[password]” size=“15” type=“password”  
/\>

  

\<%= submit\_tag “Login”%\>  
\<% end %\>

* * *

CREATE TABLE `users` (  
`id` int(11) NOT NULL auto\_increment,  
`username` varchar(64) NOT NULL,  
`password` varchar(64) NOT NULL,  
`name` varchar(200) NOT NULL,  
`email` varchar(150) NOT NULL,  
`created_at` datetime default NULL,  
PRIMARY KEY (`id`)  
) ;
