首页 文章

如何计算无 - 在Rails上无

提问于
浏览
0

Rails 4,Spree 2.1

The Issue:

使用Spree Flexi Variants雕刻计算器将项目添加到购物车时,出现错误:

undefined method `value' for nil:NilClass

我的雕刻计算器模型中的这条线是否会导致此错误?

def compute(product_customization, variant=nil)
  return 0 unless valid_configuration? product_customization

  # expecting only one CustomizedProductOption
  opt = product_customization.customized_product_options.detect {|cpo| cpo.customizable_product_option.name == "inscription" } rescue ''
  opt.value.length * (preferred_price_per_letter || 0)
end

def valid_configuration?(product_customization)
  true
end

至于 Value 方法,有什么想法吗?

我已经尝试过定义 Value ,但似乎没有任何效果 . 我有另一个名为金额时间的计算器 . 设置方式几乎相同;但是,这一个有效 . 在我的截止日期之前遇到困惑和方式 .

Here is the github repo with the branch that I am using: https://github.com/jsqu99/spree_flexi_variants/tree/spree-2-1-wip

Trace:

NoMethodError (undefined method `value' for nil:NilClass)
/Users/russellkompinski/Desktop/spree_commerce/spree_flexi_variants/app/models/spree/calculator/engraving.rb:29:in `compute'
/Users/russellkompinski/Desktop/spree_commerce/spree_flexi_variants/app/models/spree/product_customization.rb:11:in `price'
/Users/russellkompinski/Desktop/spree_commerce/spree_flexi_variants/app/models/spree/order_contents_decorator.rb:32:in `block in add_to_line_item'
/Users/russellkompinski/Desktop/spree_commerce/spree_flexi_variants/app/models/spree/order_contents_decorator.rb:32:in `map'
/Users/russellkompinski/Desktop/spree_commerce/spree_flexi_variants/app/models/spree/order_contents_decorator.rb:32:in `add_to_line_item'
/Users/russellkompinski/Desktop/spree_commerce/spree_flexi_variants/app/models/spree/order_contents_decorator.rb:7:in `add'
/Users/russellkompinski/Desktop/spree_commerce/spree_flexi_variants/app/models/spree/order_populator_decorator.rb:36:in `attempt_cart_add'
/Users/russellkompinski/Desktop/spree_commerce/spree_flexi_variants/app/models/spree/order_populator_decorator.rb:17:in `block in populate'
/Users/russellkompinski/Desktop/spree_commerce/spree_flexi_variants/app/models/spree/order_populator_decorator.rb:16:in `each'
/Users/russellkompinski/Desktop/spree_commerce/spree_flexi_variants/app/models/spree/order_populator_decorator.rb:16:in `populate'
/Users/russellkompinski/Desktop/spree_commerce/spree_flexi_variants/app/controllers/spree/orders_controller_decorator.rb:18:in `populate'

1 回答

  • 2

    您在github上指向的源代码包含 compute 的不同定义,如下所示:

    enter image description here

    这与您的堆栈跟踪一致,因为 engraving.rb 的第29行涉及 value 的调用 . 我不熟悉spree,但基于此代码, detect 调用返回 nil .

相关问题