request.request_uri
действительно будет для AJAX URI. Единственное решение, которое я нашел, - это чтобы ваши AJAX-запросы (или, по крайней мере, те, которые могут вызвать перенаправление на страницу входа в систему) включали URI всей страницы, например
form_remote_for ... do |f|
hidden_field_tag :this_page, request.request_uri
# only works if this view itself is not loaded over AJAX!
или для более универсального подхода:
form_remote_for :html => {:onsubmit => '$("this_page").value = window.location'}, ... do |f|
hidden_field_tag :this_page, request.request_uri
# non-JS clients just end up with the value given here
Объедините любой из них с
# in the login action
session[:return_to] = params[:this_page]