我很混乱。这是我的情况。最近,我将当前正在开发的应用程序拆分为三个 Rails 引擎。其中一个引擎是进行用户管理。我正在为此使用设计。默认情况下,设备使用名为(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
我看到以下结果:
/assets?action=logged_in&controller=back_office%2Fusers
这与'user/logged_in'相去甚远。而且它还阻止我使用对我来说很方便的默认设计行为。但最重要的是,我真的无法弄清楚发生了什么。