Render :action => bla, :anchor => 'bla'


I hope someone can help me with this.

I have a pretty long form (which involves scrolling). After posting the
form, some data gets validated and if there are errors the form is
rendered again and the errors are shown.

The problem is: when the form gets rendered the scroll bar is always at
the top, instead of at the part of the form where the error happened. I
tried using redirect_to :anchor => ‘bla’, but when I use that the values
the user entered are gone.

What I want to do is render :action => bla, :anchor => ‘bla’, but
obviously this doesn’t work. I can’t see how to do this. Does anyone
have an idea???


My suggestion would be to use ajax to post the errors into an
initially empty DIV. The easiest way to do this is to use an RJS
template for the response to the form. Ajax on Rails has a good
treatment of this.


On Jun 6, 12:54 pm, Mischa B. [email protected]

Thanks for the tip. I found another workaround… It may not look so
nice, but it works:

If an error occurs, call a javascript that scrolls to the anchor:

<% if flash[:cancel_error] %>

<%= flash[:cancel_error] %>
<% end %>

function scrollToError(){ window.location.hash = ‘#error’; }