我想扩展 RefineryCMS 的 PagesController 以在我们的项目中使用一些 apotomo 小部件。
我可能会对 PagesController 进行“覆盖”,将其复制到我的项目中,但我正在使用另一个扩展 PagesController 的引擎(使用模块/猴子修补方法修改 show 和 home 方法)我宁愿避免那。
我最初的方法是这样的:
在 config/application.rb 中:
config.before_initialize do
require 'pages_controller_extensions'
end
config.to_prepare do
PagesController.send :include, Refspike::Extensions
end
在 pages_controller_extensions 中:
module Refspike
module Extensions
class << PagesController
include Apotomo::Rails::ControllerMethods
has_widgets do |root|
root << widget(:map)
end
end
end
end
不幸的是,这在 apotomo 的 controller_methods 中的“helper ActionViewMethods”行中爆炸了。添加 include Apotomo::Rails::ActionViewMethods 没有帮助。
我想我只是得到了关于 Rails 依赖管理的基本细节,或者可能是 ruby 开放类错误。有没有其他方法,或者我忽略了一些简单的方法?