dbw*_*ger 3 ruby-on-rails spree
我很乐意帮助解决我遇到的令人沮丧的问题。第一次设置 Spree,但我已经在 Rails 中开发了 3 年,所以我熟悉它的工作原理。
几乎是默认设置。但是,当我尝试结帐时,单击“地址”页面上的“保存并继续”,标题中出现错误。我可以从错误来自的订单模型中看到:https : //github.com/spree/spree/blob/2-0-stable/core/app/models/spree/order.rb
def ensure_available_shipping_rates
if shipments.empty? || shipments.any? { |shipment| shipment.shipping_rates.blank? }
errors.add(:base, Spree.t(:items_cannot_be_shipped)) and return false
end
end
Run Code Online (Sandbox Code Playgroud)
不容易弄清楚哪些条件返回真。如果是我的应用程序,我会添加一个调试器语句并以这种方式检查。任何人都可以就如何进一步排除故障或尝试什么给我任何建议。
我在 Rails 3.2.14 上,Spree 2-0-stable。
谢谢!
有几种方法可以解决这个问题。如果要添加调试语句,可以打开 gem:
bundle show spree_core
Run Code Online (Sandbox Code Playgroud)
编辑代码,重新启动 Rails 服务器,然后像往常一样调试。别忘了把它改回来!
如果你想少一点侵入性,你可以启动一个 rails 控制台。获取您正在处理的订单(可能是 Spree::Order.last)并弄清楚发生了什么。
您可能遇到了运输方式和区域的问题。Spree::Zone 列出了一组国家(例如,美国、加拿大和墨西哥可以定义您的北美区域)。Spree::ShippingMethod 定义了将某物运送到特定区域的成本。这些设置都可以在管理界面中定义。
您可能选择的国家/地区不在定义的区域内,或者位于没有运输方式的定义的区域内。Spree 不知道运送物品需要多少费用(或者是否可以运送到那里),因此它会触发您看到的错误。
希望有帮助。祝你好运并开始狂欢!