Cum de a personaliza procesul de verificare Spree?

Mediul meu.

Mac OSX 10.7.4
Ruby 1.9.3p0
Rails 3.2.3
Spree 1.1.0

Bună ziua, sunt programator și începător japonez la Spree. Aș dori să personalizez procesul de verificare al Spree pentru a elimina pașii de verificare, cum ar fi selectarea metodei de livrare și a metodei de plată.

În conformitate cu Guides Spree , trebuie să definim o mașină de stare cu totul nouă pentru Comanda model.

Deci, am adăugat order_decorator.rb la directorul app/models așa cum se arată în continuare.

# app/models/order_decorator.rb

module SpreeCustomExtension
  class Engine < Rails::Engine
    def self.activate
      Order.class_eval do
        Order.state_machines[:state] = StateMachine::Machine.new(Order, :initial => 'cart') do
          after_transition :to => 'complete', :do => :complete_order
          before_transition :to => 'complete', :do => :process_payment

          event :next do
            transition :from => 'cart', :to => 'payment'
            transition :from => 'payment', :to => 'confirm'
            transition :from => 'confirm', :to => 'complete'
          end

          event :cancel do
            transition :to => 'canceled', :if => :allow_cancel?
          end
          event :return do
            transition :to => 'returned', :from => 'awaiting_return'
          end
          event :resume do
            transition :to => 'resumed', :from => 'canceled', :if => :allow_resume?
          end
          event :authorize_return do
            transition :to => 'awaiting_return'
          end

          before_transition :to => 'complete' do |order|
            begin
              order.process_payments!
            rescue Spree::GatewayError
              if Spree::Config[:allow_checkout_on_gateway_error]
                true
              else
                false
              end
            end
          end

          after_transition :to => 'complete', :do => :finalize!
          after_transition :to => 'confirm', :do => :create_tax_charge!
          after_transition :to => 'payment', :do => :create_shipment!
          after_transition :to => 'canceled', :do => :after_cancel

        end
      end
    end
  end
end

De asemenea, am adăugat fișierul spree_site.rb în directorul meu lib/.

# lib/spree_site.rb

module SpreeSite
  class Engine < Rails::Engine
    def self.activate
      Dir.glob(File.join(File.dirname(__FILE__), "../app/**/*_decorator*.rb")) do |c|
        Rails.configuration.cache_classes ? require(c) : load(c)
      end
    end

    def load_tasks
    end

    config.to_prepare &method(:activate).to_proc
  end
end

Dar se pare că nu există nicio schimbare. Oricine știe unde ar trebui să modific pentru a personaliza procesul de checkout?

vă sugerăm câteva sfaturi bune sau sfaturi. Apreciez cu adevărat orice sfaturi.

Multumesc anticipat.

0

2 răspunsuri

Trebuie să vă aflați în Spațiul de nume Spree, în afara Spree :: Order și nu pur și simplu Comandați.

0
adăugat
Mulțumesc pentru comentariul dvs., voi încerca în spațiul de nume Spree. Mulțumesc.
adăugat autor user1431177, sursa

I think your order decorator should look a little different. Just make a file app/models/spree/order_decorator.rb

Și începeți așa ceva

Spree::Order.class_eval do
  state_machine do
    before_transition to: "address" do |order|
    ...
  end
end
0
adăugat