我已经使用这个操作指南在登录后重定向到当前页面,使用设计注销。它几乎总是工作,但有一种情况不工作。
我还在注销后重定向到登录页面。没有这个重定向,一切都可以正常工作。
不工作的情况是:当我注销并再次登录时。在登录页面,我打印会话[:previous url],它是空的,登录后,它重定向到根路径·
这种行为对我来说很奇怪…什么好主意吗?这是我提到的重定向。这样,session[:previous url]在登录页面
为空。def after_sign_out_path_for(resource)
login_path
end
这就是在没有重定向的情况下的工作方式。这样,会话[:previous url]工作正常
def after_sign_out_path_for(resource)
session[:previous_url] || root_path
end
您需要重写设计的方法after_sign_out_path_for
来实现这一点。在应用程序控制器中添加以下方法
def after_sign_out_path_for(resource_or_scope)
request.referrer
end
我知道这是一个很古老的问题,但很多人(包括我)仍然有这个问题。
设计在注销期间重置会话,因此正如RSB所写,您需要使用request.referrer
将用户重定向到他们来自的地方。
在您的特定情况下,您可能希望将方法更改为以下
def after_sign_out_path_for(resource_or_scope)
session[:previous_url] = request.referrer
redirect_to login_path
end
然而,期望应用程序记住用户注销和重新登录时的位置是……非常奇异的。