【发布时间】:2014-11-10 10:21:41
【问题描述】:
我使用 active_shipping gem 来计算运费,但我遇到了一些问题。我的包裹可以有几个相同的对象。我对这些使用 PackageItem 类,但是当我使用 find_rates 方法时出现此错误。
NoMethodError: undefined method 'inches' for #<ActiveMerchant::Shipping::PackageItem:0x007fec95f24610>
这是我如何使用它的示例:
origin = Location.new(country: 'US', zip: '91801')
dest = Location.new(country: 'US', zip: '90001')
packages = PackageItem('test', 32, 18, 15, units: :imperial)
carrier = USPS.new(login: 'LOGIN')
carrier.find_rates(origin, dest, packages)
这是 PackageItem 的初始化程序:
def initialize(name, grams_or_ounces, value, quantity, options = {})
@name = name
imperial = (options[:units] == :imperial) ||
(grams_or_ounces.respond_to?(:unit) && m.unit.to_sym == :imperial)
@unit_system = imperial ? :imperial : :metric
@weight = attribute_from_metric_or_imperial(grams_or_ounces, Mass, :grams, :ounces)
@value = Package.cents_from(value)
@quantity = quantity > 0 ? quantity : 1
@sku = options[:sku]
@hs_code = options[:hs_code]
@options = options
end
价值是物品成本,这就是我的理解。
如果使用 USPS 承运人,错误会出现在这个地方:
def self.size_code_for(package)
if package.inches(:max) <= 12
'REGULAR'
else
'LARGE'
end
end
谢谢!
【问题讨论】:
标签: ruby-on-rails activemerchant