В идеале, мы будем хранить URL запроса на сессию, после успешного входа в систему, мы вернемся к этому URL-адресу. Для достижения этой цели, я определить некоторые функции в ApplicationController:
class ApplicationController < ActionController::Base
after_filter :store_location
# For devise
def after_sign_in_path_for(resource)
previous_url
end
private
def previous_url
url = session[:previous_url]
url.present? ? url : '/'
end
def store_location
# store last url - this is needed for post-login redirect to whatever the user last visited
# we will store only get request which doesn't have /user/ pattern and not a ajax request
should_store_url = request.get? && !request.path.include?('/users/') && !request.xhr?
session[:previous_url] = request.fullpath if should_store_url
end
end
Если мы используем Devise для аутентификации, Devise будет автоматически вызывать after_sign_in_path_for
для нас, в противном случае, мы будем вручную вызвать это для того, чтобы вернуться к запросу перед тем регистрируясь.
для более подробной информации, мы можем пойти here, чтобы понять, почему мы должны переписать after_sign_in_path_for
, чтобы заставить его работать (Да для Devise парней)
Какого типа параметров вы прохождение? Параметры GET сохраняются в URL-адресе, поэтому теоретически сохранение URL-адреса должно дать вам параметры. Однако это может стать беспорядочным –