1


0

次のリンク

<%= link_to "コメントにログイン"、: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

ログからのパラメータは以下の通りです。

SessionsController#newの処理(2009-07-16 02:04:44の127.0.0.1の場合)[GET]パラメータ:{"return_to" => "/ nature_photos / sdfds"、 "action" => "new"、 "controller "=>" sessions "} 74721ミリ秒で終了(表示回数:15、データベース数:0)。 200 OK [http:// localhost / session / new?return_to =%2Fnature_photos%2Fsdfds]

ここで#commentFormアンカーがreturn_toパラメータから除外されている必要があります。

その値を取得して、ページ下部のコメントフォームまでスクロールする必要があります。

1 Answer


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`の値であるURLに直接アンカーを追加します、これは文字が%23`にURIエスケープされるべきであることを意味します。 それがパラメータ `return_to`としてサーバに送り返されるとき、それはエスケープされず、あなたは再び通常のURLとしてそれを使うことができます。