我很努力地理解Rails 3.2在使用可安裝引擎時如何應用佈局。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'
,我會希望只適用於發動機/管理控制器 - 但如果我重新啓動服務器,訪問引擎/管理路徑我看到了紅色的背景,同時發動機的根視圖使用基本應用程序黃色的佈局。
如果我再次重新啓動服務器並訪問掛載引擎的根目錄,我會應用紅色背景,並保留在引擎管理路徑中。
Aaaaarggggghhhhh!
根據首先訪問應用程序的哪個路徑,預期行爲是否具有不同的應用程序佈局?當然不是?我一定做錯了什麼!
我注意到https://github.com/grigio/rails_container_and_engines相同的行爲:(但我的引擎主題追加到main_app一個與< %= stylesheet_link_tag request.env [「action_dispatch.routes」]。routes.routes [0] .defaults [:controller],:media =>「all」%> – grigio 2012-04-10 22:55:30