2014-04-25 7 views
0

У меня есть приложение Rails с механизмом для запоминания request.url и перенаправляет пользователя там после входа. Если нет request.url (т. Е. Если они просто подписываются из корня), их следует отправить в «/ home». Тем не менее, они продолжают получать сообщения «/ курсы».пользователь переадресовывается на неправильную страницу после входа в систему

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, вводят свои учетные данные и нажимают «Зарегистрироваться».

Зачем нужен запрос.url для/курсов?

ответ

0

Хорошо, это глупо, но он начал работать, как ожидается, после того, как я закрыл браузер (Chrome) и открыл его.

Смежные вопросы