2009-07-15 9 views
1

Le lien suivantLa valeur du paramètre Rails avec ancrage est ajoutée?

<%= link_to "Login to comment", :url => new_session_url(:return_to => request.request_uri, :anchor => 'commentForm'), :method => :get, :html => { :id => 'login_to_comment'} %> 

génère l'adresse suivante:

http://localhost:3000/session/new?return_to=%2Fnature_photos%2Fsdfds#commentForm 

et les paramètres sont tels que ci-dessous à partir des journaux.

Processing SessionsController#new (for 127.0.0.1 at 2009-07-16 02:04:44) [GET] 
Parameters: {"return_to"=>"/nature_photos/sdfds", "action"=>"new", "controller"=>"sessions"} 
Completed in 74721ms (View: 15, DB: 0) | 200 OK [http://localhost/session/new?return_to=%2Fnature_photos%2Fsdfds] 

Ici, je besoin que l'ancre #commentForm est exclu du paramètre return_to

Je dois obtenir cette valeur pour faire défiler vers le bas à la forme de commentaires au bas de la page.

Répondre

3

Parce que le # est déprotégés l'ancre #commentForm est en fait une partie de l'URL /session/new?return_to=... et ne fait pas partie de l'URL /nature_photos/sdfds (qui est donné comme la valeur de return_to dans la chaîne de requête). Cela se produit parce que vous utilisez l'option :anchor dans new_session_url: il ajoutera l'ancre à l'URL complète. Notez que l'ancre n'est jamais envoyée au serveur!

Ce que vous cherchez probablement est la suivante:

:url => new_session_url(:return_to => request.request_uri + "#commentForm"), ... 

Ceci ajoutera l'ancre directement à l'URL est la valeur de return_to, ce qui implique que le caractère # doit être URI échappé à %23. Lorsqu'il est renvoyé au serveur en tant que paramètre return_to, il est déconnecté et vous pouvez l'utiliser à nouveau comme une URL normale.

Questions connexes