error message in rails

I am using validations for first name, but I am getting error message two times for the label and text_field,

<div class="field">     <%= f.label :first_name %>&nbsp;     <%= f.text_field :first_name %>   </div>

Show us the validation you have specified and what the error is and why you think the error is wrong. Otherwise what hope have we got of helping?

Colin

In my model i had used the validation

validates :first_name, :format => {:with => /^[a-zA-Z.\s]*$/ i}, :length => {:minimum => 1, :maximum => 25}, :presence => true

in views <div class="field">     <%= f.label :first_name %>&nbsp;     <%= f.text_field :first_name %>   </div>

in the browser i am getting error messages 2 times like this

First name is too short (minimum is 1 characters),can't be blank
is too short (minimum is 1 characters),can't be blank

In my model i had used the validation

validates :first_name, :format => {:with => /^[a-zA-Z.\s]*$/ i}, :length => {:minimum => 1, :maximum => 25}, :presence => true

in views <div class="field"> <%= f.label :first_name %>&nbsp; <%= f.text_field :first_name %> </div>

in the browser i am getting error messages 2 times like this

First name is too short (minimum is 1 characters),can't be blank is too short (minimum is 1 characters),can't be blank

That suggests that the name is blank by the time it gets to be saved in the database. First have a look in the log (log/development.log) and check that the name is passed in correctly. Then have a look at the Rails Guide on debugging. It will show you how to use ruby-debug to break into your code and inspect data so that you can see what is wrong.

By the way please do not top post, it makes it difficult to follow the thread. Insert your reply at appropriate points in the previous message. Thanks.

Colin

Your format regex will pass an empty string (""), or a string of nothing but space characters, so that's pointless. Alternatively, if you check for at least one valid word character, then the name must be present and must be at least 1 character long. (I'm not sure why you have either the \s or . in there.)

If you've specified a minimum length of 1, then the :presence check is also pointless, isn't it?

You could condense this whole thing into one regular expression, which would likely give you only one error message :slight_smile:

e.g. /\A\s*[a-zA-Z]{1,25}\s*\Z/

Aside: You might also want to reconsider your requirements -- for example "D'Arcy" is a legitimate first name :slight_smile:

HTH,