Hi -
I''m having problems getting a my dual purpose create account and login
page working.
If I try to login, the index method runs and throws errors based on
some checks I''m running from my user model. I''m pretty sure
that the
problem is in the model, but I don''t know how to tell rails to
conditionally validate based on which action I''m calling...
-- user Model --
#...
validates_presence_of :username
validates_presence_of :email
validates_uniqueness_of :username
validates_uniqueness_of :email
attr_accessor :password_confirmation
validates_confirmation_of :password
#...
-- UserController --
def index
@user = User.new(params[:user])
if request.post? and @user.save
flash.now[:notice] = "Welcome #{@user.username} - you are all
set"
@user = User.new
end
end
def login
session[:user_id] = nil
session[:user_username] = nil
if request.post?
user = User.authenticate(params[:username], params[:password])
if user
session[:user_id] = user.id
session[:user_username] = user.username
flash[:notice] = "Welcome back #{user.username}!"
redirect_to(:action => "index")
else
flash.now[:notice] = "Invalid user/password combination"
end
end
end
-- index.html.erb --
<div class="">
<%= error_messages_for ''user'' %>
<fieldset>
<legend>create account</legend>
<% form_for :user do |form| %>
<p>
<label for="user_name">username:</label>
<%= form.text_field :username, :size => 40 %>
</p>
<p>
<label for="user_email">e-mail:</label>
<%= form.text_field :email, :size => 40 %>
</p>
<p>
<label for="user_password">password:</label>
<%= form.password_field :password, :size => 40 %>
</p>
<p>
<label
for="user_password_confirmation">confirm:</label>
<%= form.password_field :password_confirmation, :size => 40 %>
</p>
<%= submit_tag "create account", :controller =>
''user'', :action
=> ''index'' %>
<% end %>
</fieldset>
</div>
<div class="">
<fieldset>
<legend>sign in</legend>
<% form_tag do %>
<p>
<label for="user_name">username:</label>
<%= text_field_tag :username, params[:user_name] %>
</p>
<p>
<label for="password">password:</label>
<%= password_field_tag :password, params[:password] %>
</p>
<p>
<%= submit_tag "sign in", :controller =>
''user'', :action =>
''login'' %>
</p>
<% end %>
</fieldset>
</div>
Thanks in advance!
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---