如何覆盖Spree结帐表单和步骤流?

时间:2013-08-06 11:58:26

标签: ruby-on-rails ruby ruby-on-rails-3 spree

我在我的应用程序中使用spree 2.0.0。我只想知道如何编辑spree checkout或如何在Spree结帐过程中完全删除/禁用任何“Step”。

对此有何想法?

3 个答案:

答案 0 :(得分:11)

正如Documentation所说,您可以使用remove_checkout_step辅助方法(这比重新定义整个结帐流程更清晰),例如:

Spree::Order.class_eval do
  # ...
  remove_checkout_step :delivery
  # ...
end

答案 1 :(得分:6)

我刚刚找到了解决方案。在这里。

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找到更多信息。

答案 2 :(得分:4)

默认结帐狂欢中的步骤

  1. 地址
  2. 投放
  3. 付款
  4. 确认
  5. Spree允许您修改结帐流程,以使用相应的帮助程序添加或删除步骤。

    • insert_checkout_step
    • remove_checkout_step

    在您的情况下,您应该使用remove_checkout_step(删除结帐步骤) remove_checkout_step一次只会删除一个结帐步骤:

    • remove_checkout_step:地址
    • remove_checkout_step:delivery