Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ajax登录时重定向到原始页面_Ajax_Ruby On Rails 3_Redirect_Login - Fatal编程技术网

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

在ajax登录时重定向到原始页面,ajax,ruby-on-rails-3,redirect,login,Ajax,Ruby On Rails 3,Redirect,Login,我正在尝试实现以下场景: 1) 用户未登录,在foo页。 2) 用户在显示灯箱的页面上单击登录。 3) 用户通过lightbox登录。 4) 登录成功后将刷新页面foo 完成步骤1-3。现在,在步骤4中,如果用户通过lightbox方法登录,则在登录时总是将用户重定向到其配置文件页面 如果用户试图获取需要登录访问的页面,我会将登录重定向到页面。然后用户登录,并自动重定向到用户试图进入的页面。但是在上面的场景中,用户已经在一个页面上,我想在登录时刷新该页面 关于如何实现上述功能,有什么建议吗 谢谢

我正在尝试实现以下场景:

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

完成步骤1-3。现在,在步骤4中,如果用户通过lightbox方法登录,则在登录时总是将用户重定向到其配置文件页面

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

关于如何实现上述功能,有什么建议吗


谢谢。

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

但是,请注意,这将发出重定向,这意味着302状态代码(rails默认)。您可以指定要使用的状态代码:

redirect_to request.url, :status => 301

希望这有帮助

让lightbox中的登录表单通过ajax提交(而不是通常的post)。在Rails3中,只需在表单中使用
:remote=>true
。在ajax响应中,运行一些javascript刷新页面:
window.location.href=window.location.href


请注意,有许多方法可以完成任务,这只是一种选择。我发现它在我的网站上非常适合我:

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

重定向到:返回


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

假设lightbox表单将触发ajax登录请求,在ajax调用成功处理程序函数中,您可以添加location.reload(true)以强制重新加载当前页面。@eugen已在我的答案:)窗口中。location.reload()不是一个好选项。假设您在向页面发布帖子之后尝试登录。你将1)刷新发布的页面,从而再次发送信息2)得到一个弹出窗口,告诉你3)可能破坏用户体验。更好的选择是window.location.href=window.location.href。但是如果请求是XHR,它实际上不会将页面加载到DOM中。
redirect_to request.url, :status => 301