Рельсы не перенаправляются после входа
-
13-12-2019 - |
Вопрос
Я изучаю рельсы через учебное пособие Hartl, но я могу получить главу 9.2.3 Ссылка для работы
Все, прежде чем этот раздел работал идеально до этого раздела, но после получения здесь, если я получаю доступ / пользователей / 1 / редактирование и вход с другой или тот же пользователь, он перенаправляется обратно на страницу пользователя, а не на страницу редактированияОтказ
Sessions Helper:
def redirect_back_or(default)
redirect_to(session[:return_to] || default)
session.delete(:return_to)
end
def store_location
session[:return_to] = request.fullpath
end
.
Методы контроллера пользователей для до_filter
private
def signed_in_user
unless signed_in?
store_location
redirect_to signin_path, notice: "Please sign in."
end
end
def correct_user
@user = User.find(params[:id])
redirect_to(root_path) unless current_user?(@user)
end
.
перед фильтрами в пользовательском контроллере
before_filter :signed_in_user,only:[:edit,:update,:index]
before_filter :correct_user, only:[:edit,:update]
.
Мой код до сих пор github
Решение
Вы пропустили звонок Redirect_back_or Пользователь вместо Redirect_to в SessionsController Создать:
def create
user = User.find_by_email(params[:session][:email])
if user && user.authenticate(params[:session][:password])
sign_in user
redirect_back_or user
else
flash.now[:error] = 'Invalid email/password combination' # Not quite right!
render 'new'
end
end
.
Я обнаружил, что добавив сеанс на информацию о отладке в нижней части страницы, а return_to все еще был там после успешного входа:
{"session_id"=>"4dcc1baaf651aaab953026902b32f805", "_csrf_token"=>"0YkP+yd/DDuInX4kIBkjwbzxV1GK0oYBDAXEiWnHLGs=", "return_to"=>"/users/1/edit"}
.