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