Rails 3.2 Engine Layouts

Я изо всех сил пытаюсь понять, как 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'

, который, как я ожидаю, будет применяться только к контроллеру движка/администратора, но если я перезапущу сервер и получу доступ к пути движка/администратора, я увижу красный фон, в то время как корневое представление движка использует желтый макет базового приложения.

Если я снова перезапущу сервер и получу доступ к корню смонтированного механизма, я получу красный фон, который также останется на пути администратора двигателя.

Аааааааааааааааа!

Ожидается ли использование различных макетов приложения в зависимости от того, к какому пути приложения осуществляется доступ в первую очередь? Точно нет?? Должно быть, я делаю что-то не так!

18
задан John Beynon 6 April 2012 в 20:35
поделиться