Rails 3 - 设计request.referer总是有sign_in url

时间:2013-01-01 11:56:41

标签: ruby-on-rails-3 redirect devise

我正在使用devise。我想在登录过程成功后重定向到上一页。我遇到的问题是request.referer总是有sign_in URL。如何在没有明确挂钩的情况下获取上一页的URL。

def after_sign_in_path_for(resource)
   stored_location_for(resource) || request.referer || search_index_path
end

2 个答案:

答案 0 :(得分:3)

我不在我的开发机器上,所以无法验证它。但它应该是。

#application controller

def store_return_to
      session[:return_to] = request.uri
end

def redirect_back_or_default
    redirect_to(session[:return_to] || root_url)
    session[:return_to] = nil
end


#home_controller | or any other controller we want to use it.
before_filter :store_return_to

# Session/login_controlelr
Call this function after successful sign_in or sign_up
redirect_back_or_default

有点离开赛道(设计),但会有所帮助。

答案 1 :(得分:0)

内部动作控制器

before_action :store_return_to, unless: :devise_controller?
def store_return_to
 store_location_for(resource, request.url)
end

resource是您的设计模型,每个示例:user