Я хочу перенаправить пользователя на основе параметров, которые они использовали для sign_in, но я не вижу способа. знакиПеренаправить пользователя на основе параметров sign_in
пользователя в /users/sign_in/?demo=car
из
Пользователи :: SessionsController < Разрабатывают :: SessionsController
def create
super
# get the params
if params[:demo] == car
# redirect_to where_ever
end
end
Очевидно, что не будет работать.
Правильный редирект:
ApplicationController < ActionController :: Base
def after_sign_in_path_for(resource)
# I must have params[:demo] here. How?
if params[:demo] == car
# go elsewhere
else
request.env['omniauth.origin'] || stored_location_for(resource) || root_path
end
end
очень длинный путь будет обновить столбец пользователя с Params, то в after_sign_in_path_for
я проверить current_user
колонку для params затем перенаправляют. Если пользователь пришел только из исходного URL-адреса, я обновляю столбец до ""
. Отходы времени, не так ли?
Вы можете добавить скрытый вход в форму авторизации и заполнить его значение с 'Params [: демонстрационными]'. После отправки формы (входа в систему) значение будет доступно из 'params'. –
Мне все еще нужно иметь эти параметры после входа пользователя. Думаю, мне может понадобиться обновить модель пользователя, чтобы делать то, что я хочу. – Sylar
Я представил способ перенаправления параметра в метод 'after_sign_in_path_for'. Затем вы можете сохранить его в базе данных или сохранить в сеансе. Это зависит от вашего дела;) –