[英]Rails - redirecting to previous page properly
在我的应用程序中,我试图强制用户登录以执行某些操作。 当他们在未签名时尝试执行这些操作时,会将其重定向到“登录”页面,一旦他们登录,他们就会被重定向回他们尝试访问的页面。 我使用下面的代码完成了所有这些工作。
控制器代码
if !(signed_in?)
session[:return_to] = newcompany_path
redirect_to signin_path
flash[:notice] = "You must be signed in to add companies."
else
@company = Company.new
@primary_field = @@fields
end
...
redirect_path = session[:return_to]
if user && user.authenticate(params[:session][:password])
sign_in user
session[:return_to] = nil
if (redirect_path == nil)
redirect_to user
else
redirect_to redirect_path
end
else
我遇到的问题是,如果用户点击登录页面而没有实际登录,则session[return_to]
变量未正确清除,如果他们稍后返回登录,则会将其重定向到错误的页面。
那么,如何设置它,如果用户点击登录页面,会话[:redirect_to]变量会被重置?
您可以在查询字符串参数而不是会话中传递return_to
路径,并将其与登录表单一起提交,以便它仅适用于该表单,而不是后续请求。
重定向到登录表单时,它看起来像:
redirect_to signin_path(return_to: newcompany_path)
然后,在您的登录表单中,确保包含一个带有return_to
值的隐藏字段,如:
hidden_field_tag :return_to, params[:return_to]
然后在您的控制器操作中进行登录,您将检查params[:return_to]
而不是session[:return_to]
以获取所需的路径。
这是你在找什么?
redirect_to request.referrer
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.