Я изо всех сил пытаюсь понять, как Rails 3.2 применяет макеты при использовании монтируемых движков.
Сценарий: я создаю движок, который сам имеет представление панели мониторинга и представление администратора для различных функций администратора. Я хочу, чтобы макет панели управления переопределялся базовым приложением (если пользователь желает), но администратор всегда должен использовать свой собственный макет.
Вот что у меня сейчас внутри двигателя;
application_controller.rb
module Myengine
class ApplicationController < ActionController::Base
админ / 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'
который я ожидал бы применить только к контроллеру движка / администратора, но если я перезапускаю сервер и получаю доступ к пути движка / администратора, я вижу красный фон, в то время как в корневом представлении движка используется желтый макет базового приложения.
Если я снова перезапущу сервер и получу доступ к корню смонтированного движка, я получу красный фон, который останется на пути администратора движка.
Аааааргггххххх!
Ожидается ли поведение при использовании разных макетов приложения в зависимости от того, к какому пути к приложению обращаются в первую очередь? Неужто нет ?? Я, должно быть, делаю что-то не так!