我需要使用ruby 2.0中引入的prepend
方法,在ruby 1.9.3中,不支持此方法。在ruby 1.9.3中是否有一个等效的方法?
更新
我需要使用ruby 1.9.3
module ActiveAdmin::Views::Pages::BaseExtension
def add_classes_to_body
super
@body.set_attribute "ng-app", "MyApp" #I need to add this line
end
end
class ActiveAdmin::Views::Pages::Base
prepend ActiveAdmin::Views::Pages::BaseExtension
end
答案 0 :(得分:0)
我可以使用alias_method
使其有效class ActiveAdmin::Views::Pages::Base
alias_method :old_add_classes_to_body, :add_classes_to_body
def add_classes_to_body
old_add_classes_to_body
@body.set_attribute "ng-app", "MyApp"
end
end
答案 1 :(得分:0)
prepend
更改了核心Ruby对象模型,特别是调度消息的方式,没有办法在纯Ruby中执行此操作,因此,无法向后移植prepend
功能。 / p>
在prepend
之前的糟糕过去,我们过去常常这样做:
class ActiveAdmin::Views::Pages::Base
orig = instance_method(:add_classes_to_body)
define_method(:add_classes_to_body) do
orig.bind(self).()
@body.set_attribute "ng-app", "MyApp"
end
end