Need help: error_messages_for not working

Hi,

  I'm a newbie to ruby on rails. While I am writing a new application, I bumped into the following issue.

My model is as follows:

class UserRequest < ActiveRecord::Base    # Name can't contain fewer than 4 chars / more than 8 chars.    validates_length_of :name, :within => 4..8, :on => :create end

If I use scaffolding, the error message is displayed as expected when I tried to create a record with name fewer than 4 chars. However, if I write an action myself, the error messages are not displayed.

class UsersController < ApplicationController   def new     if request.post?       user = UserRequest.create(:name => params[:name])       flash[:notice] = "User (Name: #{user.name}) was created successfully"     end   end end

Here's the view (new.rhtml) <%= error_messages_for :user_request %> <%= flash[:notice] %> <% form_tag do %>    Please enter your name: <%= text_field_tag :name, nil %> <% end %>

The error_messages_for doesn't display any error messages at all. I'm sure the validation was happening as the record doesn't get added in the database if the input doesn't satisfy the condition. I've put my back into debugging this for 4 whole days and finally decided to trouble you guys. Please let me know if I'm doing something wrong here. Thanks in advance.

Woooooha! I was able to resolve this. I was using class name instead of instance variable in error_messages_for. This group is a great place!

Here's the fixed code:

Fixed controller code:

class UsersController < ApplicationController   def new     if request.post?       @user = UserRequest.create(:name => params[:name])       flash[:notice] = "User (Name: #{@user.name}) was created successfully"     end   end end

Here's the fixed - view (new.rhtml) <%= error_messages_for 'user' %> <%= flash[:notice] %> <% form_tag do %>    Please enter your name: <%= text_field_tag :name, nil %> <% end %>