在ajax登录时重定向到原始页面

时间:2011-07-11 14:49:59

标签: ajax ruby-on-rails-3 redirect login

我正在尝试实施以下方案:

1)用户未登录,并且在页面foo上。 2)用户在显示灯箱的页面上单击登录。 3)用户通过灯箱登录。 4)页面foo在登录成功后刷新。

完成步骤1-3。现在,在步骤4中,如果用户通过该灯箱方法登录,则用户始终会在登录时重定向到其个人资料页面。

如果用户尝试获取需要登录访问权限的某个页面,我会重定向到页面。然后用户登录并自动重定向到用户尝试访问的页面。但在上面的场景中,用户已经在页面上,我想在登录时刷新该页面。

有关如何实施上述内容的任何提示?

感谢。

3 个答案:

答案 0 :(得分:2)

您的问题的答案是重定向到当前页面而不是“刷新”它:

redirect_to request.url

但是,请注意,这将发出REDIRECT,这意味着302状态代码(rails默认)。您可以指定所需的状态代码:

redirect_to request.url, :status => 301

希望这有帮助!

答案 1 :(得分:0)

使灯箱中的登录表单通过ajax(而不是通常的帖子)提交。在Rails 3中,只需在表单中使用:remote => true即可。在ajax响应中运行一些刷新页面的javascript:window.location.href = window.location.href;

请注意,有很多方法可以完成您的任务,这只是一个选项。我发现它在我的网站上运行良好:http://www.tmatthew.net/blog

答案 2 :(得分:0)

在许多情况下您可以轻松使用的一个选项是:

redirect_to :back

这只是将浏览器发送回它发起请求的页面。如果您有一个表单出现在多个地方并且您希望将提交表单的人带回到他们提交的任何页面而不是总是重定向到某个页面(就像您正在描述的那样),这很方便。