2009-07-15 61 views
1

以下連結附加了anchor的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

我需要得到該值在頁面底部向下滾動到評論表單。

回答

3

由於#是未轉義,錨#commentForm實際上是URL /session/new?return_to=...的一部分,並且不是URL /nature_photos/sdfds(其給定爲的return_to在查詢字符串的值)的一部分。發生這種情況是因爲您在new_session_url中使用:anchor選項:它會將錨點添加到完整的URL。請注意,錨點永遠不會發送到服務器!

什麼你可能要找的是以下內容:

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

這將錨直接附加到是return_to值,這意味着#角色應該是URI逃到%23的URL。當它作爲參數return_to發送回服務器時,它不會轉義,您可以再次將其用作常規URL。