Перенаправить на исходный пункт назначения после входа в систему - PullRequest
6 голосов
/ 23 июля 2011

Рельсы 2.3.11

Если пользователь пытается перейти к / фотографиям, когда он не вошел в систему, он направляется на [site]/admin/login?route=[site]/photos. После того, как они войдут в систему, я бы хотел, чтобы их отправляли на то, что было определено в «маршруте» вместо домашней страницы по умолчанию.

В /app/controllers/admin_controller.rb:

def login
    if session[:user_id] #already logged in
      redirect_to ''
    @destination = request.url
    end
    if request.post?
      if [authentication code]
        if user.activated? #check to see whether the user has activated their account
          session[:user_id] = user.id
          if params[:route] # ********
            redirect_to "#{params[:route]}"
          else
            redirect_to :controller => 'home'
          end
        else
          flash.now[:notice] = "Your account hasn't been activated yet.  Check your emails!"
        end
      else
        flash.now[:notice] = "Invalid email/password combination"
      end
    end
  end

Строка ed "*" работает неправильно. Когда я проверяю параметры, среди них нет: route, поэтому аргумент не передается вместе с сообщением для входа. Может кто-нибудь объяснить мне, почему это не так и как я мог это исправить?

Спасибо!

1 Ответ

3 голосов
/ 23 июля 2011

Вы можете сделать что-то вроде:

session[:return_to] ||= request.referer
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...