Итак, я хочу отправлять пользователям электронные письма с некоторыми ссылками, по которым вы можете щелкнуть, чтобы сделать что-то, но если пользователь еще не вошел в систему, я бы хотел позволить пользователю войти в систему, а затем перенаправить его обратно к тому, к чему он пытался добраться.
У меня есть эти методы в application_controller.rb
Это называется before_filter в месте, на которое ссылается URL, ловит, что пользователь не должен находиться там, где он пытается пойти, и сохраняет намерение
def user_in_beta
unless user_signed_in? && current_user.beta
if user_signed_in?
redirect_to :home_betawait
else
session[:original_uri] = request.request_uri
redirect_to new_user_session_path
end
end
end
И это должно поймать его после того, как он войдет в систему и вернуть его туда, где он должен.
def after_sign_in_path_for(resource_or_scope)
if current_user.beta
if session[:original_uri].nil?
:home_index
else
session[:original_uri]
end
else :home_betawait
end
end
Однако это не так. Вместо этого я получаю очень неприятный "не могу перенаправить на ноль!" Если я читаю это в локальную переменную и сохраняю, все больше вещей ломаются. Я очень сбит с толку, это должно быть очень распространенным занятием.