如何在用户登录或登录Devise后自定义路由?

时间:2017-07-17 05:13:39

标签: ruby-on-rails ruby devise

目前,用户在登录/登录后会被重定向到根索引页面,但我想对其进行自定义,以便重定向转到不同的页面。

我的路线档案是:

Rails.application.routes.draw do
  devise_for :admins, path: 'admins'
  root 'home#index'
  get '/' => "courses#index", as: :user_root
  devise_for :users, path: 'users'
    resources :courses, :lessons
end

我理解默认情况下,root会成为重定向所在的位置,因此我使用了代码get '/' => "courses#index", as: :user_root,并且重定向按照我的意愿运行。但是,当用户注销时,重定向会再次尝试转到get '/' => "courses#index", as: :user_root,这是我不想要的。相反,我希望在用户注销时转到root 'home#index'重定向。

基本上我的问题是如何自定义我的root,以便根据用户登录/登录和注销来实现不同的重定向?

1 个答案:

答案 0 :(得分:2)

您可以使用:

class ApplicationController < ActionController::Base

private
  def after_sign_in_path_for(resource)
    user_root_path
  end

  def after_sign_out_path_for(resource_or_scope)
    root_path
  end
end

它是设计维基:

signing in

signing out

相关问题