我正在尝试为我的安装添加送货方式(首次添加送货方式)。当我访问此表单(admin/shipping_methods/new
)时,计算器下拉列表中没有可用的运费计算器。从文档中可以看出,Spree默认提供5个计算器,但没有一个可用。
我正在使用Spree 2-4-stable
。我浏览了回购,当然,计算器就在那里。我还研究了控制器,看看在哪里建立计算器数组。控制器中的代码是:
...
@calculators = ShippingMethod.calculators.sort_by(&:name)
...
这会返回一个空数组,因此没有显示计算器的原因。
我试图在其他方面自己拉一个计算器列表而没有运气。
# Returns an empty array as well
@calculators = Spree::ShippingMethod.calculators
奇怪的是,如果我在我的目录中运行rails console
并且一旦初始化运行
# Returns the 5 default calculators
calculators = Spree::ShippingMethod.calculators
当然,我很困惑。 rails console是否来自不同的来源?我怎样才能从控制台中提取数据,而不是应用程序。没有错误,只是应用程序中的空数组。
这可以防止我添加送货方式,这会阻止我完成设置。
有什么想法吗?
答案 0 :(得分:1)
我认为这更像是一个黑客攻击而不是一个回答",但不管怎样,它都是一个解决方案。
我最终决定只通过克隆其中一个Spree默认值并重命名它来创建我自己的运费计算器。我按照creating a custom Shipping Calculator的文档进行操作。复制完类并重命名后,我通过所述的配置方法添加了它。
添加配置语句后,所有默认的送货计算器都开始显示了!好像要创建另一个bug,我的自定义计算器无处可寻。我决定删除添加我的计算器的配置行,但是保留了默认计算器工作的初始配置行。
所以,虽然我确定这是某种错误,但解决办法是在config/initializers/spree.rb
config = Rails.application.config
重新启动服务器并繁荣!计算器现在可供选择。
<强>更新强>
为了测试,我从文件中删除了配置行,并从目录中删除了我的自定义运费计算器,看它是否会再次破坏运费计算器。奇怪的是,他们仍然有效。也许使用上面的方法加载配置可以在系统中保存一个状态,允许它继续运行。
无论哪种方式,我希望那里的其他人能够对这个问题提供一些启示。