マウント可能なエンジンを使用するときに Rails 3.2 がレイアウトを適用する方法を理解するのに苦労しています。
シナリオ: ダッシュボード ビューとさまざまな管理機能の管理ビューを備えたエンジンを構築しています。ダッシュボードのレイアウトをベース アプリケーションでオーバーライドできるようにしたい (ユーザーが望む場合) が、管理者は常に独自のレイアウトを使用する必要があります。
現時点でエンジン内にあるものは次のとおりです。
application_controller.rb
module Myengine
class ApplicationController < ActionController::Base
admin/dashboard_controller.rb
module Myengine
class Admin::DashboardController < ApplicationController
現在、エンジン application.html.erb に恐ろしい赤い背景を適用させ、ベース アプリケーションの application.html.erb には心地よい黄色の背景を使用させているため、どのアプリケーション レイアウトが適用されているかを区別できます。
この状況で、最初にベース アプリケーションにアクセスすると、(ベース アプリケーションからの) 黄色の背景が表示され、エンジンとエンジン管理パスの両方に移動すると、黄色の背景が残ります。
サーバーを再起動して最初にエンジンにアクセスすると、エンジンとエンジンの管理パスの背景が赤く表示され、ベース アプリケーションの背景は黄色になります。
admin/dashboard_controller.rb を次のように変更すると、
module Myengine
class Admin::DashboardController < ApplicationController
layout 'myengine/application'
これは、エンジン/管理コントローラーにのみ適用されると予想されますが、サーバーを再起動してエンジン/管理パスにアクセスすると、エンジンのルート ビューがベース アプリケーションの黄色のレイアウトを使用している間、赤い背景が表示されます。
サーバーを再起動してマウントされたエンジンのルートにアクセスすると、赤い背景が適用され、エンジンの管理パスにも残ります。
あああああああああああ!
アプリケーションのどのパスが最初にアクセスされるかに応じて、使用されるアプリケーションのレイアウトが異なるというのは想定される動作ですか? きっとない?? 私は何か間違ったことをしているに違いない!