【发布时间】:2015-09-11 09:53:52
【问题描述】:
我在我的应用中安装了一个使用 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
并在那里做了所有描述。 但这没有帮助。
我使用的是最新的设计版本
有什么想法吗?
【问题讨论】:
标签: ruby-on-rails ruby devise routing rails-engines