简体   繁体   English

无法覆盖Spree的辅助方法

[英]Can't override Spree's helper's method

Why my code not overriding Spree's code? 为什么我的代码没有覆盖Spree的代码?

app/helpers/spree/frontend_helper_decorator.rb 应用程序/佣工/大礼包/ frontend_helper_decorator.rb

Spree::FrontendHelper.module_eval do

    def taxons_tree(root_taxon, current_taxon, max_level = 1)
      return '' if max_level < 1 || root_taxon.children.empty?
      content_tag :ul, class: 'taxons-list' do
        root_taxon.children.map do |taxon|
          css_class = (current_taxon && current_taxon.self_and_ancestors.include?(taxon)) ? 'current' : nil
          content_tag :li, class: css_class do
           link_to(taxon.name, seo_url(taxon)) +
           taxons_tree(taxon, current_taxon, max_level - 1)
          end
        end.join("\n").html_safe
      end
    end

end

Did you have this in your application.rb ? 您的application.rb有这个吗?

config.to_prepare do
  # Load application's model / class decorators
  Dir.glob(File.join(File.dirname(__FILE__), "../app/**/*_decorator*.rb")) do |c|
    Rails.configuration.cache_classes ? require(c) : load(c)
  end

  # Load application's view overrides
  Dir.glob(File.join(File.dirname(__FILE__), "../app/overrides/*.rb")) do |c|
    Rails.configuration.cache_classes ? require(c) : load(c)
  end
end

Look accepted answer above 看起来上面接受的答案

So it worked after i've added decorator file as require to initilizer: 所以在我将装饰器文件添加到initilizer的要求后,它起作用了:

spree.rb spree.rb

require "#{Rails.root}/app/helpers/spree/frontend_helper_decorator.rb"

To add all helpers decorator i use this code: 要添加所有助手装饰器,请使用以下代码:

Dir["#{Rails.root}/app/helpers/spree/*.rb"].each {|file| require file }

Don't forget to restart server after this changes! 更改后不要忘记重新启动服务器!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM