Tôi đang trong quá trình chuyển đổi ứng dụng Rails tiêu chuẩn sang một công cụ gắn kết. Ứng dụng này có thể so sánh với ứng dụng viết blog chuẩn và tôi muốn mọi mô hình, bộ điều khiển và chế độ xem có thể mở rộng do đó lựa chọn của tôi cho một công cụ có thể gắn kết.Động cơ có thể lắp trên ray và ghi đè một công cụ khác
Một trong những viên đá quý tôi sử dụng là Devise, đó là theo như tôi hiểu một loại động cơ gắn kết chính nó. Nó có thể được sử dụng bên trong một động cơ gắn kết như đã nêu here.
Tôi có thể sử dụng nó một phần trong công cụ của mình. Tất cả mọi thứ đang làm việc tốt trong đó có một số bộ điều khiển lập mưu i ghi đè như thế này:
# config/routes.rb
Bbronline::Engine.routes.draw do
devise_for :users, class_name: "Bbronline::User", module: :devise,
controllers: { registrations: "bbronline/devise_overrides/registrations"}
...
# controllers/bbronline/devise_overrides/registrations_controller.rb
require_dependency "bbronline/application_controller"
module Bbronline
class DeviseOverrides::RegistrationsController < Devise::RegistrationsController
def new_intermediair
@user = User.new
end
...
Quan điểm đúng 'views/bbronline/devise_overrides/đăng ký/new_intermediair.html.haml' cũng đang tải một cách chính xác như mong đợi.
Tuy nhiên, vấn đề của tôi là các chế độ xem mà tôi ghi đè mà không có bộ điều khiển tùy chỉnh không được tải đúng cách. Ví dụ: chế độ xem mà chế độ xem đăng nhập sẽ nằm ở views/bbronline/devise/sessions/new.html.haml
và không được tải. Thay vào đó, chế độ xem đăng nhập Devise chuẩn được tải xuống tức là devise-2.1.0/app/views/devise/sessions/new.html.erb
Tất nhiên tôi có thể giải quyết vấn đề này bằng cách ghi đè mọi bộ điều khiển bằng bộ điều khiển của riêng mình như tôi đã làm với đăng ký_controller ở trên nhưng điều này có vẻ rất xấu. Là trọng lượng mỗi bộ điều khiển cách để làm điều này? Có cách nào thuận tiện hơn để ghi đè chế độ xem từ một công cụ có thể gắn kết từ bên trong một công cụ gắn kết khác không?
Bất kỳ cách nào tôi có thể thực hiện thay đổi này mà không phải thay đổi cấu hình của ứng dụng giả của tôi? Tôi muốn thực hiện hành vi mặc định này bất cứ khi nào tôi tải đá quý của mình. – Ajedi32