Перенаправить на определенный URL после входа в систему - PullRequest
11 голосов
/ 03 сентября 2010

Есть ли способ в Devise 1.0, библиотеке Rails 2.3, перенаправлять на определенный URL, а не root_url после входа в систему?

EDIT: забыл упомянуть, что это Devise 1.0

Ответы [ 3 ]

21 голосов
/ 20 октября 2010

Скорее всего, ваш пользователь перенаправляется до вызова after_sign_in_path.Это происходит, если пользователь пытается перейти на страницу, защищенную аутентификацией напрямую.Это будет происходить постоянно, если ваша root_path ('/') защищена аутентификацией.

В группах Google обсуждается эта тема:

Быстрое и грязное решение состоит в том, чтобы перезаписать stored_location_for, чтобы всегда возвращать nil, например, так:

class ApplicationController < ActionController::Base  
...

  private 
  def stored_location_for(resource_or_scope)
    nil
  end

  def after_sign_in_path_for(resource_or_scope)
    my_favorite_path
  end
end
4 голосов
/ 03 сентября 2010

Я думаю, что метод after_sign_in_path_for в Devise - это то, что вы ищете.

Определите этот метод в вашем ApplicationController, и он заменит реализацию Devise по умолчанию. Это то, что указывается в документации.

Подробности здесь: http://rdoc.info/github/plataformatec/devise/master/Devise/Controllers/Helpers:after_sign_in_path_for

0 голосов
/ 15 ноября 2012

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

class HomesController < ApplicationController    
    def index
       if current_user //returns nil if not logged in
          @users = User.all
          render :dashboard
       end
    end

    def dashboard
       @users = User.all
    end
end

в маршрутах.dashboard.erb отображается.(не забудьте инициализировать все переменные, необходимые для dashboard.erb, в вашем блоке if) В противном случае rails рендерит index.erb

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...