Не могу переопределить метод помощника Spree - PullRequest
0 голосов
/ 16 апреля 2019

Почему мой код не переопределяет код Spree?

app / helpers / spree / 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

Ответы [ 2 ]

1 голос
/ 23 апреля 2019

У вас было это в вашем 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
0 голосов
/ 18 апреля 2019

Смотрите принятый ответ выше

Так что все заработало после того, как я добавил файл декоратора, как требуется для инициализатора:

spree.rb

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

Чтобы добавить все помощники декоратора, я использую этот код:

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

Не забудьте перезапустить сервер после этих изменений!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...