How show validation errors in form_remote_tag?

I suspect this has been asked 400 times, but Google yields 2-3 rather complex gymnastics in blogs (and possibly dated), and searching list archives on ruby-forum proves kinda useless.

Using standard forms, it's fairly easy to use @object.errors[:field_name] in the form to embed an error message right next to the field that has the invalid entry. The controller uses a simple conditional with redirect_to to re-display the form if needed.

I don't understand how to reproduce this same straight-forward process when the form uses a form_remote_tag.

Is there a simple, universal process for this, or does it really take 40 lbs of hacks to accomplish like the blogs all seem to suggest?

It should be reasonably straightforward to re-render the entire form. It might get more complicated if you want to be cleverer that that. I suppose you could have a div/span with a predictable id next to each field then loop over object.errors, inserting relevant content into each of these div/spans

Fred

Frederick Cheung wrote:

when the form uses a form_remote_tag.

Is there a simple, universal process for this, or does it really take 40 lbs of hacks to accomplish like the blogs all seem to suggest?

It should be reasonably straightforward to re-render the entire form. It might get more complicated if you want to be cleverer that that. I suppose you could have a div/span with a predictable id next to each field then loop over object.errors, inserting relevant content into each of these div/spans

So far I have something like this in the controller. Similar to what I'd do for a non-Ajax routine.

if @object.custom_save   respond_to do |request_format|     request_format.js   end else   render :action => 'edit_method' end

The view rendered by edit_method uses something like this:

<% if @object.errors.on(:field_name) -%> ERROR <% end -%> <input type="text" ...etc... />

The RJS is pretty basic like this:

page.replace_html 'formID', :partial => the_path, :locals => {:object => @object}

The page starts with a div for viewing data only. Click and Edit button, and it is replaced with an editable form which includes a Save button.

By the time the controller gets to render :action, it seems like the rjs is ineffective. AFAICT (visually) there's no actual updating of the HTML via RJS.

-- gw

Greg Willits wrote:

Greg Willits wrote:

I don't understand how to reproduce this same [validation display] process when the form uses a form_remote_tag.

Figured it out. I pretty much had it right, but I needed some vars re-defined before the form was displayed the second time. So pulled that out into a method which both the first & second pass actions could make use of.

-- gw