我有一个引擎,在我的主应用程序中,我有控制器继承了一些引擎的控制器。
class UsersController < MyEngine::UsersController
end
如何强制我的引擎使用子控制器而不必在我的主应用程序中重新创建所有路由?
----使用装饰器(JensD的解决方案):
我已添加到我的engine.rb文件
config.to_prepare do
Dir.glob(Rails.root + "app/decorators/**/my_engine/*_decorator*.rb").each do |c|
require_dependency(c)
end
end
和装饰者
MyEngine::MyController.class_eval do
end
但是super
是不可能的......
解决方案是在我的引擎中创建一个子控制器并在其上使用装饰器,但它看起来很奇怪......
答案 0 :(得分:0)
我更喜欢将此gem用于装饰器而不是require_dependency:
https://github.com/EPI-USE-Labs/activesupport-decorators
使用此gem或您的require_dependency,您可以使用:
alias_method :super_index, :index
def index
...
super_index
end