gpt4 book ai didi

mysql - Spree 2.0.0 在结帐时合并 2 个州?

转载 作者:行者123 更新时间:2023-11-30 23:49:43 25 4
gpt4 key购买 nike

场景:

我已经从我的应用程序中的 Spree 结账流程中删除了交付步骤,并且我能够成功完成交易。

问题:

当我导航到“我的帐户”页面时,“装运状态”列显示 nil 对于当前已完成但没有“交货”状态的订单。我检查了 Spree::Orders 表,它对当前订单的“SHIPMENT STATE”有 nil 值。似乎“SHIPMENT STATE”是在“Delivery”状态下确定的。根据我的理解,当我从结帐中删除“交付”状态时,它造成了这个问题。对此有什么想法吗?我附上了“我的帐户”页面的屏幕截图。

enter image description here

问题:

是否可以在结帐期间在“付款” View 中组合/呈现“交付”状态 View 。即使在从结帐中删除 (remove_checkout_step :delivery) 交付状态之后?

最佳答案

Spree 做了很多与交付过渡相关的事情。当我们修改状态机并删除那个结帐步骤时,这些事情仍然需要完成。

作为引用,我会将您指向 https://gist.github.com/Senjai/bb5a4c3cf0e0b77be92f#file-checkout-rb-L89-L93

if states[:delivery]
before_transition :to => :delivery, :do => :create_proposed_shipments
before_transition :to => :delivery, :do => :ensure_available_shipping_rates
before_transition :from => :delivery, :do => :apply_free_shipping_promotions
end

当您删除交付步骤时,不会发生 create_proposed_shipments 和 friends。

您可以用 class_eval Spree::Order 代替结帐 Controller 。

在 state_machine do block 中,您可以将突出显示的事件添加到不同的操作。在这种情况下,如果没有交付,您要么希望在之后执行这些操作,要么从付款过渡(我没有深入研究)

可能需要额外的工作,因为您可能需要自己设置送货方式/费率。因为 View 在 Vanilla spree 中做到了这一点。同样,它可以附加到状态机。

参见 https://github.com/pluginaweek/state_machine有关状态机的更多信息。

关于mysql - Spree 2.0.0 在结帐时合并 2 个州?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18117651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com