# Login form question

**URL:** <https://www.ruby-forum.com/t/login-form-question/101721>\
**Category:** Rails\
**Created:** [August 7, 2006, 5:18pm UTC](https://www.ruby-forum.com/t/login-form-question/101721 "2006-08-07T17:18:43Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![zanoni](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/e99b99/32.png) [@zanoni](https://www.ruby-forum.com/u/zanoni)\
**Post date:** [August 7, 2006, 5:18pm UTC](https://www.ruby-forum.com/t/login-form-question/101721/1 "2006-08-07T17:18:43Z")

</div>

I’m using Rails Recipes to create a login form but instead of username  
and password, my setup is firstname, lastname, password.

I seemed to be gramatically challenged and not sure how to set up the  
parameter list. Can anyone offer up a suggestion.  
The book shows the method starting like:

if request.post?  
user = User.find(:first, :conditions =\> [‘username = ?’ ,  
params[:username]])

So here is my attempt but with some obvious mistakes:  
def login  
if request.post?  
user = User.find(:first, :conditions =\> [‘first\_name = ?’,  
‘last\_name = ?’, params  
[:first\_name],  
[last\_name]

…  
end

TIA  
Stuart

---

<div class="post-metadata">

**Author:** ![zanoni](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/e99b99/32.png) [@zanoni](https://www.ruby-forum.com/u/zanoni)\
**Post date:** [August 7, 2006, 5:36pm UTC](https://www.ruby-forum.com/t/login-form-question/101721/2 "2006-08-07T17:36:45Z")

</div>

I’m now getting a wrong number of arguments (2 for 1).  
Again, the user should sign on with first name , last name, password

def login  
if request.post?  
user = User.find(:first, :conditions =\> [‘first\_name = ?’,  
‘last\_name = ?’,  
params[:first\_name, :last\_name]])  
if user.blank? ||  
Digest::SHA256.hexdigest(params[:password] + user.password\_salt)  
!=  
user.password\_hash  
raise “First name, Last name, or password invalid”  
end  
session[:user] = user.id  
redirect\_to :action =\> session[:intended\_action],  
:controller =\> session[:intended\_controller]  
end  
end

Stuart

---

<div class="post-metadata">

**Author:** ![zanoni](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/e99b99/32.png) [@zanoni](https://www.ruby-forum.com/u/zanoni)\
**Post date:** [August 7, 2006, 6:06pm UTC](https://www.ruby-forum.com/t/login-form-question/101721/3 "2006-08-07T18:06:48Z")

</div>

Try  
User.find(:first, :conditions =\> [‘first\_name = ? AND last\_name = ?’,  
params[:first\_name], params[:last\_name])

Jon

---

<div class="post-metadata">

**Author:** ![zanoni](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/e99b99/32.png) [@zanoni](https://www.ruby-forum.com/u/zanoni)\
**Post date:** [August 7, 2006, 6:18pm UTC](https://www.ruby-forum.com/t/login-form-question/101721/4 "2006-08-07T18:18:49Z")

</div>

user = User.find(:first, :conditions =\> [‘first\_name = ? and last\_name  
= ?’, params[:first\_name], params[:last\_name])

---

<div class="post-metadata">

**Author:** ![zanoni](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/e99b99/32.png) [@zanoni](https://www.ruby-forum.com/u/zanoni)\
**Post date:** [August 7, 2006, 6:24pm UTC](https://www.ruby-forum.com/t/login-form-question/101721/5 "2006-08-07T18:24:51Z")

</div>

Thank you , that fixed it!

Stuart

---

<div class="post-metadata">

**Author:** ![zanoni](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/e99b99/32.png) [@zanoni](https://www.ruby-forum.com/u/zanoni)\
**Post date:** [August 7, 2006, 6:27pm UTC](https://www.ruby-forum.com/t/login-form-question/101721/6 "2006-08-07T18:27:53Z")

</div>

Actually I should ask another question, in the recipes book the login  
form is built with  
start\_form\_tag, so:  
\<%= start\_form\_tag :action =\> “signin” %\>  
Username:  
\<%= text\_field\_tag “username” %\>  
  
Password:  
\<%= password\_field\_tag “password” %\>  
  
\<%= submit\_tag “Sign in” %\>  
\<%= end\_form\_tag %\>

I am using a regular form tag , wondering if that would make a  
different how the post is handled?  
Here is the way I constructed the form:

Log in to your account First name: \<%= text\_field "user", "first\_name" %\>

```
<label for="last_name" >Last name:</label>
<%= text_field "user", "last_name" %>

<label for="password" >Password:</label>
<%= password_field "user", "password" %>

<input type="Submit" value="Login" %>
</form>

```

Stuart

---

<div class="post-metadata">

**Author:** ![zanoni](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/e99b99/32.png) [@zanoni](https://www.ruby-forum.com/u/zanoni)\
**Post date:** [August 7, 2006, 7:28pm UTC](https://www.ruby-forum.com/t/login-form-question/101721/7 "2006-08-07T19:28:00Z")

</div>

I guess it does make a difference because with start\_form\_tag the form  
works. 🙂

Thanks  
Stuart

---

<div class="post-metadata">

**Author:** ![zanoni](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/e99b99/32.png) [@zanoni](https://www.ruby-forum.com/u/zanoni)\
**Post date:** [August 7, 2006, 8:06pm UTC](https://www.ruby-forum.com/t/login-form-question/101721/8 "2006-08-07T20:06:57Z")

</div>

Stuart Fellowes wrote:

> I guess it does make a difference because with start\_form\_tag the form  
> works. 🙂
> 
> Thanks  
> Stuart

You can always View Source from your browser to see what’s different  
between the two approaches.

Jeff

---

<div class="post-metadata">

**Author:** ![zanoni](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/z/e99b99/32.png) [@zanoni](https://www.ruby-forum.com/u/zanoni)\
**Post date:** [August 7, 2006, 8:49pm UTC](https://www.ruby-forum.com/t/login-form-question/101721/9 "2006-08-07T20:49:08Z")

</div>

Good idea, I forgot that option.

Stuart
