我在我的应用程序导航栏中有一个登录表单,想知道是否有一种简单的方法,当您登录时,将sign in重定向到您当前所在的页面。 谢谢!
我在我的应用程序导航栏中有一个登录表单,想知道是否有一种简单的方法,当您登录时,将sign in重定向到您当前所在的页面。 谢谢!
redirect_back
并添加后备路径:redirect_back(fallback_location: root_path)
redirect_to root_url, :notice => "Logged in!"
在这里,您可以输入任何路径,以便将用户重定向到该路径,而不是root_url。但请确保在routes.rb中添加它。
如果您考虑未成功的登录,可以使用render
方法重新加载您的登录视图。
redirect_back_or_to root_path
redirect_back_or_to
,但是没错这就是正确的方法! - Jillian Hoenig这个解决方案来自Devise团队,应该可以解决问题...
在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
redirect_to
路径根据未登录用户当前所在的站点位置进行更改。导航栏在每个页面上都可见,因此例如,如果用户在主页上登录,则希望 sessons_controller 运行reidrect_to home_path
或者如果他们在用户页面上登录,我想它运行redirect_to user_page
。 - user2136807.json
文件。因此,你需要编写一个JavaScript函数来重新加载页面并在控制器中呈现该文件。类似于location.reload()
。 - Erfan Sh.z.