登录后将用户返回上一页(Rails)

问题描述:

在rails 2.3.8站点上,我在每个页面上都有登录链接(将用户带到单独的登录页面)。成功登录后,用户当前被重定向到root用户。相反,我想重定向到他们之前查看的页面。登录后将用户返回上一页(Rails)

我一直在使用request.referer尝试:

redirect_back_or_default(request.referer) 

其中redirect_back_or_default:

def redirect_back_or_default(default) 
    redirect_to(session[:return_to] || default) 
    session[:return_to] = nil 
end 

但产生 “拒绝访问” 错误,即使登录成功。

+0

这看起来不错,你确定他们实际上登录了吗? – Chap 2012-02-28 21:07:40

+0

是的,他们肯定会登录(可以查看先前无法访问的页面,登录链接更改为用户页面链接,登录链接更改为登出等)。即使用户从根用户登录,也会发生错误。 – Exupery 2012-02-28 21:19:10

+0

你可以发布你的会话控制器代码吗? – PhillipKregg 2012-02-28 21:19:25

,而不是试图重定向到引荐,我会设置会话[:的return_to]

你需要一个能够在所有你的行动身份验证之前运行过滤器之前:

def store_return_to 
    session[:return_to] = request.url 
end 

然后改变你的重定向到

redirect_back_or_default() 
+0

正是我在寻找的内容,非常感谢! – Exupery 2012-03-02 15:51:46

+0

谢谢你,我花了几个小时才发现*中的其他答案并没有工作。 – kakubei 2012-04-23 12:04:09

+0

是的。这是一个很好的非设计解决方案。这就是我很难找到的,所以我想我会在评论中输入“不使用Devise”,所以它更容易找到! – 2016-02-04 17:13:08