Redirect whole page from AJAX action that updates a div

Hi,

I am calling an action via AJAX to update a div. The action needs to
redirect the page in under certain circumstances. However, if I just use
“redirect_to” in the action then of course what happens is that the page
I want to redirect to replaces only the div, not the entire page, and I
get messy nested layouts.

Is there a way around this? Can I redirect the entire document from an
action that is called via AJAX to update a div?

Thanks for any help!
Ingo W.

I’m assuming you’re using link_to_remote in which case you need to pass
into that method a callback javascript function. Take a look at
http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper.html#M000412.
You probably need to do something like the following:

link_to_remote 'My Link,
:url => { :action => “action” },
404 => “alert(‘Not found…? Wrong URL…?’)”,
:failure => “window.location = request”

then when a redirect (302) is sent the failure handler will be hit. You
probably want more error and bounds checking though.

I’m pretty sure this is clost to right and would write more but I need
to run.

-Matt Bauer

You can also conditionally render an .rhtml file that contains a script
block something like:

PrototypeHelper will by default try to evaluate scripts in returned
blocks.