Tôi đang cố gắng hiểu cách Rails 3.2 áp dụng bố trí khi sử dụng các công cụ có thể lắp.Rails 3.2 Bố cục động cơ
Tình huống: Tôi đang xây dựng một công cụ có chế độ xem bảng điều khiển và chế độ xem quản trị viên cho các chức năng quản trị khác nhau. Tôi muốn bảng điều khiển có bố trí của nó overridable bởi các ứng dụng cơ sở (nếu người dùng mong muốn) nhưng admin nên luôn luôn sử dụng bố trí riêng của mình.
Đây là những gì tôi có vào lúc này bên trong động cơ của mình;
application_controller.rb
module Myengine
class ApplicationController < ActionController::Base
admin/dashboard_controller.rb
module Myengine
class Admin::DashboardController < ApplicationController
bây giờ tôi có động cơ của tôi application.html.erb áp dụng một nền đỏ gớm ghiếc trong khi các ứng dụng cơ sở application.html.erb sử dụng nền màu vàng dễ chịu để tôi có thể phân biệt bố cục ứng dụng nào đang được áp dụng. Trong tình huống này, nếu tôi truy cập vào ứng dụng cơ sở đầu tiên tôi thấy nền màu vàng của tôi (từ ứng dụng cơ bản) và nếu tôi đi đến cả đường dẫn quản trị động cơ và đường dẫn quản trị động cơ thì nền màu vàng vẫn còn.
Nếu tôi khởi động lại máy chủ và truy cập công cụ trước thì tôi sẽ thấy nền đỏ cho công cụ và đường dẫn quản trị công cụ trong khi ứng dụng cơ sở hiển thị nền màu vàng.
Nếu tôi sửa đổi quản trị viên/dashboard_controller.rb của mình như sau;
module Myengine
class Admin::DashboardController < ApplicationController
layout 'myengine/application'
mà tôi mong muốn chỉ áp dụng cho bộ điều khiển công cụ/quản trị viên - nhưng nếu tôi khởi động lại máy chủ và truy cập đường dẫn động cơ/quản trị tôi thấy nền đỏ trong khi chế độ xem gốc của công cụ sử dụng ứng dụng cơ sở bố cục màu vàng.
Nếu tôi khởi động lại máy chủ lần nữa và truy cập thư mục gốc của công cụ được gắn, tôi sẽ áp dụng nền màu đỏ còn lại trên đường dẫn quản trị công cụ.
Aaaaarggggghhhhh!
Hành vi dự kiến có bố cục khác nhau của ứng dụng được sử dụng tùy theo đường dẫn của ứng dụng được truy cập trước không? Chắc chắn không ?? Tôi phải làm việc gì đó sai lầm!
tôi nhận thấy hành vi tương tự với https://github.com/grigio/rails_container_and_engines :(nhưng tôi thêm chủ đề động cơ đến main_app một với < % = stylesheet_link_tag request.env ["action_dispatch.routes"]. routes.routes [0] .defaults [: controller],: media => "all"%> – grigio