Значение параметра Rails с добавленным якорем? - PullRequest
1 голос
/ 16 июля 2009

по следующей ссылке

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

генерирует следующий URL:

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 Ответ

3 голосов
/ 16 июля 2009

Поскольку # не экранирован, якорь #commentForm фактически является частью URL /session/new?return_to=..., а не является частью URL /nature_photos/sdfds (который задается как значение return_to в строке запроса). Это происходит потому, что вы используете опцию :anchor в new_session_url: она добавит привязку к полному URL. Обратите внимание, что якорь никогда не отправляется на сервер!

Вероятно, вы ищете следующее:

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

Это добавит привязку непосредственно к URL-адресу, который является значением return_to, что означает, что символ # должен иметь URI, экранированный к %23. Когда он отправляется обратно на сервер в качестве параметра return_to, он не экранируется, и вы можете снова использовать его в качестве обычного URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...