У меня есть приложение 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 для/курсов?