尝试使用官方网站上的文档进行狂欢扩展(运费计算器)。
狂欢扩展my_calc,然后添加到我的应用Gemfile:gem 'my_calc', :path => '../my_calc'
,然后bundle install
。
在my_calc
目录中,我创建了app/models/spree/calculator/shipping/my_calc.rb
module Spree
class MyCalc < Spree::ShippingCalculator
preference ...
def self.description
...
end
def compute_package(package)
...
end
def available?(package)
...
end
end
end
然后我将以下内容添加到config/initializers/spree.rb
config = Rails.application.config
config.spree.calculators.shipping_methods << Spree::MyCalc
但是当我尝试启动rails服务器时,我收到了一个错误:
.../config/initializers/spree.rb:23:in `<top (required)>': uninitialized constant Spree::MyCalc (NameError)
请帮忙。
答案 0 :(得分:0)
在config/initializers/spree.rb
中的第23行上方添加以下内容:
module Spree
class MyCalc < Spree::ShippingCalculator
end
end
然后重新启动服务器以使更改生效。
答案 1 :(得分:0)
@Agis提供的方法可能会有效,但imho有一个更好的解决方案,只需等到所有内容都被初始化:
config = Rails.application.config
config.after_initialize do
config.spree.calculators.shipping_methods << Spree::MyCalc
end
根据您的计算路径,您可能会收到Unable to autoload constant Spree::Calculator::Shipping::MyCalc
错误,因为Rails会因文件路径而尝试自动加载此类。要解决它,请稍微改变你的课程:
module Spree
class Calculator::Shipping::MyCalc < ShippingCalculator
(...)
现在一切都应该得到很好的加载,作为奖励,您将在管理页面中看到您的计算而不再添加任何内容。