how to handle remote_form_tag post either by i) ajax or ii) redirection

Hi,

I have non-model custom validation for a data input to a certain
remote_form_tag view. I'd like to have differential responses in the
controller in the following cases:

1) when remote_form_tag post results fail validation, the form view is
updated from the controller, as by the following:

      render :update do |page|
         page.replace_html 'errors', :partial => "iod_errors"
      end

2) when the remote_form_tag post results passes validation, the
controller redirects to another action or view, as in the following:

      redirect_to passed_validation_url

Unfortunately, using the following simple parameterization of
form_remote_tag,

     <% form_remote_tag :url=>create_iod_url do %>
           ...

I am succesful in my case 1), but nothing happens at all in my case
2).

Any suggestions?

Thanks,

Lille

If your form is expecting rjs then you need to give it rjs (eg
page.redirect_to).

Fred

Fred,

Thanks, that worked great.

I don't understand why the form is expecting anything after it has
submitted to the controller, i.e., I don't understand that a
remote_form_tag handles redirect_to calls. Maybe I don't get where RJS
is 'taking place'.

For the record the solution snippet sequence is as follows:

[controller action: case 1]

      render :update do |page|
         page.replace_html 'errors', :partial => "iod_errors"
      end

[controller action: case 2]

      render :update do |page|
         page.redirect_to passed_validation_url
      end

[form_remote_tag]

     <% form_remote_tag :url=>create_iod_url do %>

Fred,

Thanks, that worked great.

I don't understand why the form is expecting anything after it has
submitted to the controller, i.e., I don't understand that a
remote_form_tag handles redirect_to calls. Maybe I don't get where RJS
is 'taking place'.

What rjs means is that a response consisting entirely of javascript is
generated. Ajax requests in prototype come in two flavours: Either
they expect to get a fragment of html back which they insert into a
specific place in the DOM or they expect to get some javascript back
in which case they execute it. Stuff like link_to_remote and
remote_form_for will create the former (Ajax.Updater) if you supply
Ajax.Request if not

Fred