Rails引擎:控制器继​​承和路由

时间:2015-07-09 12:10:24

标签: ruby-on-rails-4 inheritance routing decorator rails-engines

我有一个引擎,在我的主应用程序中,我有控制器继承了一些引擎的控制器。

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是不可能的......

解决方案是在我的引擎中创建一个子控制器并在其上使用装饰器,但它看起来很奇怪......

1 个答案:

答案 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