登录后,用户被重定向到错误的页面

时间:2014-04-25 00:14:12

标签: ruby-on-rails ruby-on-rails-4

我有一个Rails应用程序,它有一个机制来记住request.url并在用户登录后将用户重定向到那里。如果没有request.url(即他们只是从根目录登录),他们应该是发送到" / home"。但是,他们不断被送到" / courses"。

sessions_helper.rb

def sign_in(user)
  remember_token = User.new_remember_token
  cookies.permanent[:remember_token] = remember_token
  user.update_attribute(:remember_token, User.hash(remember_token))
  self.current_user = user
end

def redirect_back_or(default)
  p session[:return_to].to_s
  redirect_to(session[:return_to] || default)
  self.current_user = nil
end

def store_location
  p request.url # I put this here to debug it
  session[:return_to] = request.url if request.get?
end

sessions_controller.rb

def create
  user = User.find_by(email: params[:session][:email].downcase)
  if user && user.authenticate(params[:session][:password]) && user.confirmed?
    sign_in user
    redirect_back_or root_url
  elsif
    ...
  else
    ...
  end
end

routes.rb (相关的)

root 'static_pages#home'

get 'home', to: 'users#home'

get 'signin', to: 'sessions#new'
delete 'signout', to: 'sessions#destroy'

get 'courses', to: 'course#index'

在我p request.url的阶段,终端输出" localhost:3000 / courses"。但是,用户在登录流程期间不在任何地方请求/课程。他们只需转到signin_path,输入凭据并点击“登录”。

为什么request.url被设置为/ courses?

1 个答案:

答案 0 :(得分:0)

好的,这很愚蠢,但在我关闭浏览器(Chrome)并将其打开后,它开始按预期工作。