Rails 引擎:控制器继承和路由
Rails engines : Controller inheritance and routes
我有一个引擎,在我的主应用程序中,我的控制器继承了一些引擎的控制器。
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
不可能...
一个解决方案是在我的引擎中创建一个子控制器并在其上使用装饰器,但这看起来很奇怪...
我更喜欢用这个 gem 作为装饰器而不是 require_dependency:
https://github.com/EPI-USE-Labs/activesupport-decorators
有了这个 gem 或者你的 require_dependency 你可以使用:
alias_method :super_index, :index
def index
...
super_index
end
我有一个引擎,在我的主应用程序中,我的控制器继承了一些引擎的控制器。
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
不可能...
一个解决方案是在我的引擎中创建一个子控制器并在其上使用装饰器,但这看起来很奇怪...
我更喜欢用这个 gem 作为装饰器而不是 require_dependency:
https://github.com/EPI-USE-Labs/activesupport-decorators
有了这个 gem 或者你的 require_dependency 你可以使用:
alias_method :super_index, :index
def index
...
super_index
end