Я изо всех сил пытаюсь понять, как 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.рб следующим образом;
module Myengine
class Admin::DashboardController < ApplicationController
layout 'myengine/application'
, который, как я ожидаю, будет применяться только к контроллеру движка/администратора, но если я перезапущу сервер и получу доступ к пути движка/администратора, я увижу красный фон, в то время как корневое представление движка использует желтый макет базового приложения.
Если я снова перезапущу сервер и получу доступ к корню смонтированного механизма, я получу красный фон, который также останется на пути администратора двигателя.
Аааааааааааааааа!
Ожидается ли использование различных макетов приложения в зависимости от того, к какому пути приложения осуществляется доступ в первую очередь? Точно нет?? Должно быть, я делаю что-то не так!