Перенаправление на определенный URL после входа в систему

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

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

Ответ 1

Скорее всего, ваш пользователь перенаправляется до вызова 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

Ответ 3

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

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

в routes.rb:

root :to => 'homes#index'

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