【发布时间】:2019-04-16 08:36:42
【问题描述】:
为什么我的代码没有覆盖 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
【问题讨论】:
-
您可以尝试将文件重命名为
frontend_helper.rb吗? -
@MrShemek 错误:
Circular dependency detected while autoloading constant Spree::FrontendHelper -
能否将第一行改为:
module Spree::FrontedHelper(删除module_eval块)? -
@MrShemek 我以前做过。这会导致问题,只有我的自定义方法有效,而 Spree::FrontendHelper 的其他方法无效。
-
@MrShemek 我找到了解决方案,请看我的回答)
标签: ruby-on-rails spree