我正在尝试使用以下方法重写 base_helper.rb 的辅助方法:
module Spree
module BaseHelper.class_eval do
def taxons_tree(root_taxon, current_taxon, max_level = 1)
.....
end
end
end
这对我不起作用。有人知道我在这里缺少什么吗?
谢谢!
已修复:
我应该使用:
Spree::BaseHelper.module_eval do
def taxons_tree(root_taxon, current_taxon, max_level = 1)
...
end
end
相反。
重新打开模块也可以正常工作:
module Spree
module BaseHelper
def taxons_tree(root_taxon, current_taxon, max_level = 1)
...
end
end
end
使用
class_eval
和module_eval
没有什么特别的原因,这只是Spree项目中很长一段时间以来的习惯。
定义装饰器模块。使用 Rails 7.1 和 Spree 4.9.0 进行测试。
app/helpers/spree/base_helper_decorator.rb
module Spree
module BaseHelperDecorator
def self.prepended(base)
base.class_eval do
def taxons_tree(root_taxon, current_taxon, max_level = 1)
...
end
end
end
end
end
Spree::BaseHelper.prepend(Spree::BaseHelperDecorator)