Rails参数值附加锚点?

时间:2009-07-15 20:50:42

标签: ruby-on-rails

以下链接

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

生成以下网址:

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

,日志中的参数如下。

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]

这里我需要#commentForm锚从参数return_to

中排除

我需要获取该值以向下滚动到页面底部的评论表单。

1 个答案:

答案 0 :(得分:3)

由于#未转义,锚#commentForm实际上是网址/session/new?return_to=...的一部分,不属于网址/nature_photos/sdfds (在查询字符串中以return_to的值给出)。这是因为您使用:anchor中的new_session_url选项:它会将锚点添加到完整的网址中。请注意,永远不会将锚发送到服务器!

您可能正在寻找以下内容:

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

这会将锚点直接附加到return_to值的网址,这意味着#字符应该被URI转义为%23。当它作为参数return_to发送回服务器时,它将被取消转义,您可以再次将其用作常规URL。