Since I upgraded from Rails 1.8.6 to 2.3.5, I just noticed that I can no
longer add new users through my Signup page.
Here is the error:
NoMethodError in UserController#signup
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.save!
/work/store/app/controllers/user_controller.rb:6:in `signup'
Here is my Controller, line 6 is @user.save!:
def signup
return unless request.post?
@user.save!
redirect_back_or_default(:controller => 'grapher', :action =>
'index')
flash[:notice] = "New User Successfully Created"
rescue ActiveRecord::RecordInvalid
render :action => 'signup'
end
Here is my form:
<% form_for :user do |f| -%>
<label for= "first_name">First Name</label>
<%= f.text_field :first_name %>
<label for= "last_name">Last Name</label>
<%= f.text_field :last_name %>
<label for= "user_login">Login</label>
<%= f.text_field :login %>
<label for= "user_email">Email</label>
<%= f.text_field :email %>
<label for= "user_password">Password</label>
<%= f.password_field :password %>
<label for= "user_password_confirmation">Confirm Password</label>
<%= f.password_field :password_confirmation %>
<%= submit_tag 'Sign up' %>
<% end -%>
Here are my request parameters when I get the error:
Request
Parameters:
{"user"=>{"password_confirmation"=>"password",
"first_name"=>"john",
"last_name"=>"smith",
"login"=>"jsmith",
"password"=>"password",
"email"=>"jsmith@email.com"},
"commit"=>"Sign up"}
It seems to me that I'm passing the correct params so I don't understand
why I'm getting a "nil object" error?