私は困惑している。これが私の状況です。最近、現在作業中のアプリケーションを3つのRailsエンジンに分割しました。エンジンの1つは、ユーザー管理を実行しています。そのためにdeviseを使用しています。デフォルトでは、デバイスは(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'からはほど遠いです。また、デフォルトのDeviseの動作を使用できなくなります。これは私にとって便利なものです。しかし、最も重要なのは、何が起こっているのか本当に理解できないということです。