在我的应用程序控制器中,我有类似的东西:
after_filter :store_location
def store_location
# store last url as long as it isn't a /users path
session[:previous_url] = request.fullpath unless request.fullpath =~ /\/users/
end
def after_sign_in_path_for(resource)
session[:previous_url] || root_path
end
这适用于存储以前的网址,但是在某些网页上我会自动重定向到登录页面,如下所示:
before_filter :require_login
def require_login
unless current_user
redirect_to new_user_session_path
end
end
在重定向用户的页面上(使用require_login过滤器),它不存储以前的URL。它只是将它们默认为root_path。
如何为重定向的用户正确存储以前的网址?
答案 0 :(得分:1)
devise
提供了一种名为stored_location_for
的方法,可以为您完成工作
def after_sign_in_path_for(resource)
stored_location_for(resource) || root_path
end
答案 1 :(得分:0)
想出来。问题是我使用:
after_filter :store_location
但是需要立即存储url(在重定向之前)。所以问题通过使用:
解决了before_filter :store_location
确保它落在之前:
before_filter :require_login