ruby-on-rails-3 - 注册自定义 spree 计算器不起作用

标签 ruby-on-rails-3 spree

遵循此页面上的文档...
http://guides.spreecommerce.com/developer/calculators.html

我在模型/spree/计算器/中创建了一个类

module Spree 
class Calculator::ZipTax <  Calculator
  def self.description
  "Calculates Tax Rates From Zipcode in TaxRates Table"
   end
    def compute(computable)
  case computable
    when Spree::Order
      compute_order(computable)
    when Spree::LineItem
      compute_line_item(computable)
  end
end
    def compute_order(order)
    zipcode = order.bill_address.zipcode[0,5]
    zip = TaxTable.where(:zipcode => zipcode).first
    if(zip.present?)
      rate = zip.combined_rate
        order.line_items.sum(&:total) * rate
    else 
      0
    end

end
  end
end

在 initializers/spree.rb 中,我添加了:
config = Rails.application.config
config.spree.calculators.tax_rates << Spree::Calculator::ZipTax

但是我无法启动 Rails。我在初始化程序/spree.rb 文件中为 nil:NilClass (NoMethodError) 得到了未定义的方法 `<<'。

如何注册自定义计算器?使用 spree 1.3.2。

最佳答案

您需要将配置包装在 after_initialize 中:

在 config/application.rb

config.after_initialize do
  config.spree.calculators.tax_rates << Spree::Calculator::ZipTax
end

您遇到错误是因为在您的应用程序启动过程中,此时 spree 计算器尚未初始化,因此您试图将计算器附加到为零的内容。

在 Spree 扩展中常用的另一种方法是执行以下操作:
initializer 'spree.register.calculators' do |app|
  app.config.spree.calculators.shipping_methods << Spree::Calculator::ZipTax
end

关于ruby-on-rails-3 - 注册自定义 spree 计算器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16728127/

相关文章:

ruby-on-rails-3 - Spree 0.40.x (Rails 3) 是否有可用的 CMS 扩展?

mysql - Rails config/routes.rb 文件不起作用(参见正文)

ruby-on-rails-3 - 在 Rails 3.1.3 Assets 中放置 Jquery 没有冲突

ruby-on-rails-3 - 将 Rails 从 3.1.1 升级到 3.1.3 后,参数数量错误(3 换 1)

ruby-on-rails - Spree Auth 设计重定向尝试访问/admin

ruby-on-rails - Rack 中间件 "trapping"堆栈跟踪

ruby-on-rails - Spree为钱找零的安全更新:Class

ruby-on-rails - 从表中删除条目而不从数据库中删除它

ruby-on-rails-3 - 如何在 Rails 4.0 的生产中引用 CSS 背景图像?

ruby-on-rails - 在 Spree (RoR) 中保存产品时,价格乘以 100