【发布时间】:2013-08-06 11:58:26
【问题描述】:
我在我的应用程序中使用 spree 2.0.0。我只想知道如何编辑狂欢结账,或者如何在狂欢结账过程中完全删除/禁用任何“步骤”。
对此有什么想法吗?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 spree
我在我的应用程序中使用 spree 2.0.0。我只想知道如何编辑狂欢结账,或者如何在狂欢结账过程中完全删除/禁用任何“步骤”。
对此有什么想法吗?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 spree
正如Documentation 所说,您可以使用remove_checkout_step 辅助方法(这也比重新定义整个结帐过程更清晰),例如:
Spree::Order.class_eval do
# ...
remove_checkout_step :delivery
# ...
end
【讨论】:
我刚刚找到了解决方案。在这里。
Step 1:Create app/models/order_decorator.rb file
Step 2: Copy following code in your order_decorator.rb
Spree::Order.class_eval do
checkout_flow do
go_to_state :address
#go_to_state :delivery
go_to_state :payment, if: ->(order) {
order.update_totals
order.payment_required?
}
go_to_state :confirm, if: ->(order) { order.confirmation_required? }
go_to_state :complete, if: ->(order) {
(order.payment_required? && order.has_unprocessed_payments?) || !order.payment_required?
}
remove_transition from: :delivery, to: :confirm
end
end
示例:如果您想删除交付状态,只需将其注释掉即可。您可以注释掉任何步骤。
您可以在documentation找到更多信息。
【讨论】:
Spree 中的默认结帐步骤
Spree 允许您使用相应的帮助程序修改结帐流程以添加或删除步骤。
在您的情况下,您应该使用 remove_checkout_step(删除结帐步骤) remove_checkout_step 将一次只删除一个结帐步骤:
【讨论】: