Redirect_to an :anchor not working

In my noddy blog app I want to not have to scroll back down after
deleting
an entry.

I first tried using Javascript scrollTop in the view, but I could not
find a way of passing the value to the controller so that I could pass
it back to the view. I hope an expert can describe what methods, if
any, can be used to pass values from a view to an action (without
using a form). This seems to be poorly documented.

So I decided to use anchors instead (which is probably the correct way).
Each blog entry in the view gets an id=X attibute (X = 1,2,3,etc). If I
delete entry 4 then I want to scroll to entry 4-1=3.

In the index view:-

<% for comment in @comments %>
<% return_to=return_to+1 %>

... <%= link_to 'Delete', comment_path(:id => comment.id, :return_to => return_to-1, :post_id => @post),:method => :delete %>

Hovering over the delete link of entry 4 I see the following URL
displayed
at the bottom of FireFox:-

http://localhost:3000/comments/47?return_to=3&post_id=12

In the destroy action I redirect_to index and specify an :anchor
parameter:-

format.html { redirect_to :action => ‘index’, :anchor =>
params[:return_to],:post_id => params[:post_id] }

The :anchor parameter is automatically propagated thru the :index action
as it appears in the browser’s URL field. :-

http://localhost:3000/comments?post_id=12#3

Unfortunately the browser does not actually scroll down to the specified
anchor.

However if I then hit Enter on the URL it does jump to the anchor!!

Does anyone know how to get anchors working properly?

PS as you can see I am using REST but probably not to the full extent,
since I have post_id=23 when in fact I should probably have something
like/post/23/comment/56. but that is another issue

Peter

‘3’ isn’t a valid ID field in XHTML. You need to prefix it with some
non-numerical string. e.g.:

http://localhost:3000/comments?post_id=12#_3

for an element with an attribute: id="_3"

Or, better: #post_3 for id=“post_3”

Does that fix it?

I tried changing the IDs from id=“1” to id=“anchor_1” in order to follow
xhtml
better. It id not help. (the ids are on DIVs by the way)

I should reiterate that the anchors do work OK when I hit Enter on the
URL
(after an unsuccessful test)(for both id formats)

This suggest that there is nothing wrong with the anchors in the xhtml
page
and it is more likely something about the redirect_to or firefox that is
not
quite right

Peter

Oops, replied to author instead of thread.

I believe this is caused by use of a numeric ID, which is invalid
XHTML. Use ids that begin with a letter, or an underscore.

Peter wrote:

I tried changing the IDs from id=“1” to id=“anchor_1” in order to follow
xhtml
better. It id not help. (the ids are on DIVs by the way)

I should reiterate that the anchors do work OK when I hit Enter on the
URL
(after an unsuccessful test)(for both id formats)

This suggest that there is nothing wrong with the anchors in the xhtml
page
and it is more likely something about the redirect_to or firefox that is
not
quite right

Peter

it isn’t a ruby on rails issue; it’s a browser/standards issue. (either
you’re having some clashes between existing div’s, or the xhtml isn’t
valid, or …)

SO, the best reccomendation is to validate the page and get rid of
errors/warnings (i doubt u don’t have any), you might bump into
something that will activate a trigger thus leading u to the way to
solve the problem -

http://www.w3.org/QA/Tools/

hope it helps etc

Hi
thanks for the suggestion to clean up the xhtml. This did not fix the
problem
but a nother of other ones instead,

I fixed the main problem by disabling my old javascript attemt to scroll
to
the correct position using scrollTop. so a false alarm on my part. sorry

anchors now work!
Peter

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs