Ruby on rails Rails 3引擎路由解析“匹配”到资源路径

Ruby on rails Rails 3引擎路由解析“匹配”到资源路径,ruby-on-rails,ruby,Ruby On Rails,Ruby,我很困惑。这是我的情况。最近,我将目前正在开发的应用程序拆分为三个Rails引擎。其中一个引擎正在进行用户管理。我用的是Desive。默认情况下,设备使用名为user_route的路由在用户登录后重定向用户,所以我在引擎的routes.rb文件中定义了它 长话短说: 在主应用程序的routes.rb中,我有: mount BackOffice::Engine, at: '/bo' 在BO引擎的routes.rb中,我有: match 'user/logged_in' => 'use

我很困惑。这是我的情况。最近,我将目前正在开发的应用程序拆分为三个Rails引擎。其中一个引擎正在进行用户管理。我用的是Desive。默认情况下,设备使用名为user_route的路由在用户登录后重定向用户,所以我在引擎的routes.rb文件中定义了它

长话短说:

在主应用程序的routes.rb中,我有:

mount BackOffice::Engine,    at: '/bo'
在BO引擎的routes.rb中,我有:

match 'user/logged_in' => 'users#logged_in',       as: 'user_root'
引擎中的整个routes.rb是:

BackOffice::Engine.routes.draw do
  devise_for :admins, {
    class_name: 'BackOffice::Admin',
    module: :devise,
  }

  devise_for :users, {
    class_name: 'BackOffice::User',
    module: :devise,
  }

  resources :admins
  resources :users
  resources :life_promotions

  match ''               => 'life_quotations#index', as: 'life_quotations'
  match 'user/logged_in' => 'users#logged_in',       as: 'user_root'

  root to: 'life_quotations#index'
end
如果我这样做的话:

module BackOffice
  class ApplicationController < ActionController::Base
    before_filter lambda { raise user_root_path }
  end
end
这远远不是“用户/登录”。而且它也阻止了我使用默认的设计行为,这对我来说很方便。但最重要的是,我真的不知道发生了什么

Rails.application.routes.draw do
需要被用来代替

BackOffice::Engine.routes.draw do

在引擎中,因为引擎路由中的匹配只存在于引擎的命名空间中,而不存在于整个应用程序中。

引擎中的整个路由文件是什么样子的?我将其添加到问题中:
BackOffice::Engine.routes.draw do