2015-11-18 2 views
0

Мне нужно перенаправить моих пользователей на страницу, на которую они хотели пойти, а не на предыдущую, по причинам удобства использования.Rails devise: перенаправить пользователя после входа в URL-адрес, который он хотел отправить

прямо сейчас, если Im в странице B, а затем хочет перейти на страницу что журнал в необходимости затем пользователь вводит свои учетные данные и перенаправляется на страницу B вместо страницы .

Это стало очень серьезной проблемой юзабилити в моем приложении.

Представьте, что вы видите продукт, и вы нажимаете «Купить сейчас», тогда вам нужно ввести данные в журнал, прямо сейчас после входа в систему вы перенаправляетесь обратно на продукт вместо формы выписки.

Это как мой код выглядит следующим образом:

class ApplicationController < ActionController::Base 
    after_filter :store_location 

    def store_location 
     # store last url as long as it isn't a /users path 
     session[:previous_url] = request.fullpath unless request.fullpath =~ /\/users/ 
    end 

    def after_sign_in_path_for(resource) 
     session[:previous_url] || root_path 
    end 
end 

ответ

2

Что вы ищете является request.referer. Когда пользователь переходит к , купите сейчас и перенаправляется на экран входа в систему, Купить сейчас URL-адрес в этом случае.

+0

Так я должен заменить 'сессии [: previous_url] || root_pat' 'request.referer'? – SsouLlesS

+0

yeap, это правильно. Затем он должен перенаправить пользователя в точку, из которой он был перенаправлен на страницу входа. –

-1

Просто скопируйте приведенный ниже код в приложение/контроллеры/application_controller.rb файл

class ApplicationController < ActionController::Base  

     protected   
     protect_from_forgery with: :exception 
     def after_sign_in_path_for(resource) 
     dashboard_index_path 
     end 
end 

Я надеюсь, что это поможет ..

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