Marnen Laibow-Koser wrote:
Ralph S. wrote:
Newb here.
I have a form and a value that is being displayed … and I have no idea
where the value came from.
I have done a
<%= debugger; ‘’ %>
in the form and, indeed, the debugger stops at the statement.
I have tried to trace through the code to see where the value came from
… and I gave up.
You’re going to have to describe the problem in more detail, with actual
code, if you want help. And what do your tests say?
So … what in Rails initializes the fields of a form?
If you’re using form_for – and you didn’t say if you were! – then the
form is initialized from the supplied model object.
Ok … here’s the code
\zauth\app\views\users\new.html.erb
Signup for eMeantime Membership
<%= error_messages_for :user %>
<% form_for :user, :url => users_path do |f| -%>
Login:
<%= f.text_field :login %>
Ex., aedenfield
Email:
<%= debugger; '' -%>
<%= f.text_field :email %>
Ex., [email protected]. A valid email is required for an active
account.
Password:
<%= f.password_field :password %>
Enter the password that is between 4 and 40 characters in
length.
Confirm Password:
<%= f.password_field :password_confirmation %>
Enter the same password as above.
<%= submit_tag 'Sign up' %>
<% end -%>
\zauth\app\controllers\users_controller.rb
class UsersController < ApplicationController
Protect these actions behind an admin login
before_filter :admin_required, :only => [:suspend, :unsuspend,
:destroy, :purge]
before_filter :find_user, :only => [:suspend, :unsuspend, :destroy,
:purge]
render new.rhtml
def new
end
def create
puts at_file_line_msg(FILE, LINE)
cookies.delete :auth_token
# protects against session fixation attacks, wreaks havoc with
# request forgery protection.
# uncomment at your own risk
# reset_session
@user = User.new(params[:user])
raise ActiveRecord::RecordInvalid.new(@user) unless @user.valid?
@user.register!
flash[:notice] = "Thanks for signing up!"
rescue ActiveRecord::RecordInvalid
render :action => ‘new’
end
def activate
self.current_user = params[:activation_code].blank? ? :false :
User.find_by_activation_code(params[:activation_code])
if logged_in? && !current_user.active?
current_user.activate!
flash[:notice] = “Signup complete!”
end
redirect_back_or_default(’/’)
end
def suspend
@user.suspend!
redirect_to users_path
end
def unsuspend
@user.unsuspend!
redirect_to users_path
end
def destroy
@user.delete!
redirect_to users_path
end
def purge
@user.destroy
redirect_to users_path
end
def change_password
return unless request.post?
if User.authenticate(current_user.login, params[:old_password])
if ((params[:password] == params[:password_confirmation]) &&
!params[:password_confirmation].blank?)
current_user.password_confirmation =
params[:password_confirmation]
current_user.password = params[:password]
if current_user.save
flash[:notice] = "Password successfully updated"
redirect_to profile_url(current_user.login)
else
flash[:alert] = "Password not changed"
end
else
flash[:alert] = "New Password mismatch"
@old_password = params[:old_password]
end
else
flash[:alert] = "Old password incorrect"
end
end
#gain email address
def forgot_password
return unless request.post?
if @user = User.find_by_email(params[:user][:email])
@user.forgot_password
@user.save
redirect_back_or_default(’/’)
flash[:notice] = “A password reset link has been sent to your
email address”
else
flash[:alert] = “Could not find a user with that email address”
end
end
#reset password
def reset_password
@user = User.find_by_password_reset_code(params[:id])
return if @user unless params[:user]
if ((params[:user][:password] &&
params[:user][:password_confirmation]) &&
!params[:user][:password_confirmation].blank?)
self.current_user = @user #for the next two lines to work
current_user.password_confirmation =
params[:user][:password_confirmation]
current_user.password = params[:user][:password]
@user.reset_password
flash[:notice] = current_user.save ? “Password reset success.” :
“Password reset failed.”
redirect_back_or_default(’/’)
else
flash[:alert] = “Password mismatch”
end
end
protected
def find_user
@user = User.find(params[:id])
end
end
I apologize for the length of the code but since I am lost as to where
in the model the code initializes the form … I provided everything.
The fields that seem to be inappropriately initialized are the fields
associated with :email (definitely) and :password (maybe).
The :password field has big dots in it … and it may be initialized
… I can’t tell.