狂欢:当覆盖帮助程序时,来自其他帮助程序的方法不可用

时间:2014-09-19 10:57:04

标签: ruby-on-rails ruby ruby-on-rails-4 spree

我试图在Spree(版本2.1.9.beta)中覆盖BaseHelper中的link_to_cart方法。 我在base_helper_decorator.rb中创建了app/helpers/spree并在那里复制了我要修改的方法(来自spree/core/app/helpers/spree/base_helper.rb):

# app/helpers/spree/base_helper_decorator.rb
Spree::BaseHelper.module_eval do
  def link_to_cart(text = nil)
    text = text ? h(text) : Spree.t('cart')
    css_class = nil

    if simple_current_order.nil? or simple_current_order.item_count.zero?
      text = "#{text}: (#{Spree.t('empty')})"
      css_class = 'empty'

(...)

    end
  end
end

现在对服务器的任何请求都会导致错误:undefined local variable or method 'simple_current_order' for #<#<Class:0x007fdea921b828>:0x007fdea22a1128>

simple_current_ordercore/lib/spree/core/controller_helpers/order.rb

中定义

如何在BaseHelper覆盖中使用此方法?

0 个答案:

没有答案