【问题标题】:Spree overriding helper methodSpree 覆盖辅助方法
【发布时间】:2012-08-12 20:51:22
【问题描述】:

我正在尝试使用以下方法覆盖 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

改为。

【问题讨论】:

  • 对我来说只有在使用时才有效Spree::BaseHelper.class_eval

标签: helper spree overriding


【解决方案1】:

重新打开模块也可以:

module Spree
  module BaseHelper
   def taxons_tree(root_taxon, current_taxon, max_level = 1)
      ...
   end
  end
end

使用class_evalmodule_eval 并没有什么特别的原因,这只是Spree 项目很长时间以来的习惯。

【讨论】:

  • Ryan,我们把这段代码放在哪里。我需要覆盖 link_to_cartmethod 来制作定制的购物车段。我来自 PHP,如果这是一个 Rails 问题,我很抱歉,但非常感谢您的评论。
  • 在 app/helpers 下创建一个文件夹,名为 spree,并将 Ryan Bigg 的代码放入名为 base_helper.rb 的文件中
  • @JoaoPereira 如果你调用 base_helper.rb,spree 将不会加载原始的 base_helper.rb。您必须复制/粘贴每个功能,才能正常运行。但是如果你调用 base_helper_decorator.rb,它就可以工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 2014-05-23
  • 2021-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-13
相关资源
最近更新 更多