7

我的应用程序导航栏中有一个登录表单,我想知道是否有一种简单的方法可以在您登录时重定向到您当前所在的任何页面。谢谢!

4

5 回答 5

19

redirect_to(:back)只要给出推荐人,您就可以。但是,我建议您看一下这个答案,因为那里提供的解决方案将对登录失败和 OAuth 重定向等问题具有弹性。

于 2013-07-11T19:17:23.453 回答
6

在 Rails 5 中,您应该使用redirect_back并添加回退路径:

redirect_back(fallback_location: root_path)
于 2017-09-19T06:17:41.347 回答
2

如果您已经编写了为您的用户创建会话的代码,那么只需在您的会话控制器中添加这一行:

redirect_to root_url, :notice => "Logged in!"

您可以在此处输入您希望将用户重定向到的任何路径,而不是root_url 。但请确保在您的routes.rb
中有它 ,如果您考虑登录不成功,您可以使用render方法重新加载您的登录视图

于 2013-07-11T19:19:35.570 回答
0

来自设计人员的这个解决方案应该可以解决问题......

写下ApplicationController以下内容:

after_filter :store_location

def store_location
  # store last url - this is needed for post-login redirect to whatever the user last visited.
  return unless request.get? 
  if (request.path != "/users/sign_in" &&
      request.path != "/users/sign_up" &&
      request.path != "/users/password/new" &&
      request.path != "/users/password/edit" &&
      request.path != "/users/confirmation" &&
      request.path != "/users/sign_out" &&
      !request.xhr?) # don't store ajax calls
    session[:previous_url] = request.fullpath 
  end
end

def after_sign_in_path_for(resource)
  session[:previous_url] || root_path
end
于 2015-08-08T00:04:51.170 回答
0

redirect_back对我有用:

redirect_back fallback_location: root_path
于 2021-06-18T04:10:15.190 回答