Over a million developers have joined DZone.

Putting The Errors In The Right Place

DZone's Guide to

Putting The Errors In The Right Place

· ·
Free Resource
The idea is to display the error near the field instead of in global area at the top of the page.
Simple… first go into your view and delete the

error_messages_for ‘object’

Then stick this in your application helper.

# application_helper.rb
def error_for(object, method = nil, options={})
  if method
    err = instance_variable_get("@#{object}").errors.on(method).to_sentence     rescue instance_variable_get("@#{object}").errors.on(method)
     err = @errors["#{object}"] rescue nil
:style=>(err ? #{options[:style]}":"#{options[:style]};display: none;")
 content_tag("p",err || "", options )     

Then in your form view, add an ‘error_for’ call wherever you need one…

# _form.rhtml

<%= text_field ‘code_project’, ‘name’ %> <%= error_for ‘code_project’, ‘name’ %>

If the model fails a validation test, then it will show the message right next to the field that caused the validation problem. Also note that if you define an instance variable called @errors containing a hash of field_names and messages, they will also be used. This is handy for those form fields that don’t correspond to a model attribute.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}