2013-08-27 18 views
3

在登錄或退出Devise後,我被重定向回到父應用程序root_path而不是我的引擎的根路徑(或者,因爲您可以在下面看到,我試圖將它指定到home_path)。在登錄/註銷Mountable引擎後重定向到父應用程序,而不是引擎

引擎路線:

MyEngine::Engine.routes.draw do 
    devise_for :users, { 
    :class_name => "MyEngine::User", 
    :module => :devise 
    } 

    get '/' => 'home#index', as: :home 
    root :to => 'home#index' 

end 

引擎應用程序控制器:

module MyEngine 
    class ApplicationController < ActionController::Base 

    def after_sign_in_path_for(resource) 
     home_path 
    end 

    end 
end 

謝謝...

回答

1

這個問題是沒有命名空間的會話控制器。在引擎中明確指定控制器,並使其名稱空間正確解決問題。

路線:

MyEngine::Engine.routes.draw do 
    devise_for :users, { 
    :class_name => "MyEngine::User", 
    :module => :devise, 
    :controllers => { :sessions => "my_engine/sessions" } 
    } 
end 

SessionsController在 '控制器/ my_engine/sessions_controller':

module MyEngine 
    class SessionsController < ::Devise::SessionsController 

    end 
end 
+0

這真是棒極了!只是爲了澄清 - 確保在命名空間SessionsController中覆蓋私有方法'after_sign_in_path_for'。 – yellowaj

相關問題