Mik*_*ffe 8 spree ruby-on-rails-3
按照此页面上的文档... http://guides.spreecommerce.com/developer/calculators.html
我在模特/狂欢/计算器/中创建了一个类
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
Run Code Online (Sandbox Code Playgroud)
在initializers/spree.rb中我添加了:
config = Rails.application.config
config.spree.calculators.tax_rates << Spree::Calculator::ZipTax
Run Code Online (Sandbox Code Playgroud)
但我不能让Rails开始.我在initializer/spree.rb文件中得到nil:NilClass(NoMethodError)的未定义方法`<<'.
如何注册自定义计算器?使用Spree 1.3.2.
gma*_*all 11
您需要将配置包装在after_initialize中:
在config/application.rb中
config.after_initialize do
config.spree.calculators.tax_rates << Spree::Calculator::ZipTax
end
Run Code Online (Sandbox Code Playgroud)
您遇到错误,因为在应用程序启动过程中,狂欢计算器尚未初始化,因此您尝试将计算器附加到零值.
Spree扩展中常用的另一种方法是执行以下操作:
initializer 'spree.register.calculators' do |app|
app.config.spree.calculators.shipping_methods << Spree::Calculator::ZipTax
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1690 次 |
| 最近记录: |