【问题标题】:No route matches [GET] "/accounts/sign_in" when use devise from mounted engine使用已安装引擎的设计时,没有路线匹配 [GET] "/accounts/sign_in"
【发布时间】: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


    【解决方案1】:

    在调试devise gem 时,我发现commit 破坏了默认引擎路径。 所以现在的解决方案是使用设计3.5.1 而不是3.5.2(目前是最后一个设计版本)

    这个问题也描述了here

    【讨论】:

      猜你喜欢
      • 2015-09-27
      • 2015-11-21
      • 1970-01-01
      • 2014-07-05
      • 2013-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      相关资源
      最近更新 更多