Я в процессе конвертации своего стандартного приложения Rails в монтируемый двигатель. Приложение сопоставимо со стандартным приложением для блогов, и я хочу, чтобы каждая модель, контроллер и вид расширялись, поэтому мой выбор для монтируемого движка.Rails монтируемый двигатель и переопределение другого двигателя
Один из драгоценных камней, которые я использую, - это Devise, насколько я понимаю, что-то вроде монтируемого двигателя. Его можно использовать внутри монтируемого двигателя, как указано в here.
Я могу использовать его частично в своем двигателе. Все прекрасно работает в том числе некоторые DEViSE контроллера я переопределить как этот:
# 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
...
правильное мнение «вид/bbronline/devise_overrides/регистрация/new_intermediair.html.haml» также загружаются правильно, как и ожидалось.
Однако моя проблема заключается в том, что представления, которые я переопределяю без специального контроллера, загружены неправильно. Например, представление, которое должно иметь вид входа в систему, находится в views/bbronline/devise/sessions/new.html.haml
и не загружено. Вместо этого загружается стандартное представление входа в Devise, то есть devise-2.1.0/app/views/devise/sessions/new.html.erb
Конечно, я мог бы решить эту проблему, переопределив каждый контроллер своим контроллером, как это сделал с помощью регистратора_контроллера, но это кажется очень уродливым. Превращает ли каждый контроллер способ сделать это? Есть ли более удобный способ переопределить представления из монтируемого движка из другого монтируемого ядра?
В любом случае, я мог бы внести это изменение без изменения конфигурации моего фиктивного приложения? Я бы предпочел сделать это по умолчанию, когда я загружаю свой драгоценный камень. – Ajedi32