当使用已安装引擎的设计时,没有路由匹配 [GET]“/accounts/sign_in”
No route matches [GET] "/accounts/sign_in" when use devise from mounted engine
我在使用 Devise 的应用程序中安装了一个引擎。而且我还要再安装一个也应该使用它的。所以我决定使用第一个引擎的设计。
config/routes.rb
:
Rails.application.routes.draw do
mount EngineWithDevise::Engine => "/engine_with_devise"
mount MyEngine::Engine => "/my_engine"
end
一切正常,但当我添加以下代码时:
module MyEngine
class ApplicationController < ActionController::Base
before_action :authenticate_account!
end
end
我收到以下错误:
ActionController::RoutingError:
No route matches [GET] "/accounts/sign_in"
所以它重定向到 /accounts/sign_in
而不是 /devise_with_engine/accounts/sign_in
当我手动访问它时是登录成功然后正常工作。
当我将引擎安装到 /
时它工作正常:
Rails.application.routes.draw do
mount EngineWithDevise::Engine => "/"
mount MyEngine::Engine => "/my_engine"
end
根据manual我添加的路由器名称:
config.router_name = engine_with_devise
并做了那里描述的所有事情。
但这并没有帮助。
我用的是最后一个Devise版本
有什么想法吗?
我在使用 Devise 的应用程序中安装了一个引擎。而且我还要再安装一个也应该使用它的。所以我决定使用第一个引擎的设计。
config/routes.rb
:
Rails.application.routes.draw do
mount EngineWithDevise::Engine => "/engine_with_devise"
mount MyEngine::Engine => "/my_engine"
end
一切正常,但当我添加以下代码时:
module MyEngine
class ApplicationController < ActionController::Base
before_action :authenticate_account!
end
end
我收到以下错误:
ActionController::RoutingError:
No route matches [GET] "/accounts/sign_in"
所以它重定向到 /accounts/sign_in
而不是 /devise_with_engine/accounts/sign_in
当我手动访问它时是登录成功然后正常工作。
当我将引擎安装到 /
时它工作正常:
Rails.application.routes.draw do
mount EngineWithDevise::Engine => "/"
mount MyEngine::Engine => "/my_engine"
end
根据manual我添加的路由器名称:
config.router_name = engine_with_devise
并做了那里描述的所有事情。 但这并没有帮助。
我用的是最后一个Devise版本
有什么想法吗?