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