/ / चेक-इन प्रवाह को परिवर्तन में बदलकर 0.10.2 - रूबी-ऑन-रेल, स्प्री

होड़ में 0.10.2 - रूबी-ऑन-रेल, स्प्री में चेकआउट प्रवाह को बदलना

मुझे एक डिलीवरी और भुगतान चरण से रहित चेकआउट प्रक्रिया की आवश्यकता है (एक स्टोर पर काम करना जो कैश ऑन डिलीवरी स्वीकार करता है इसलिए मुझे केवल इसकी आवश्यकता है पता चरण।) मै इस्तेमाल कर रहा हूँ होड़ 0.10.2

चीजें जो मैंने कोशिश की हैं: में site_extension.rb निम्नलिखित राज्य मशीन को जोड़ा

Checkout.state_machines[:state] = StateMachine::Machine.new(Checkout, :initial => "address") do
after_transition :to => "complete", :do => :complete_order
before_transition :to => "complete", :do => :process_payment
event :next do
transition :to => "complete", :from => "address"
end
end

अवांछित कदम हटा दिए जाते हैं (कम से कम नेत्रहीन) लेकिन जब मैं सबमिट करता हूं पता यह निम्न त्रुटि को फेंकता है।

में सूचकांक CheckoutsController # अद्यतन "भुगतान" एक अमान्य नाम है

समान त्रुटियों के निशान और जोड़े को देखते हुएबाद में, मैं तय करता हूं checkouts_controller.rb से आँख बंद करके दो तरीकों को ओवरराइड करें site_extension.rb कुछ नहीं करने के लिए (क्योंकि वे भुगतान के साथ सौदा मैं अनुमान)

 def clear_payments_if_in_payment_state
end

def object_params
end

यह करना सभी पर सत्यापन त्रुटियों को फेंकता हैवितरण के क्षेत्र और बिल भेजने का पता। मेरे पास एक धारणा है कि मुझे कुछ तरीकों को ओवरराइड करने की आवश्यकता है checkouts_controller.rb से। अगर यह धारणा सही है तो क्या हैं उन तरीकों।

उत्तर:

उत्तर № 1 के लिए 1

आपको :

1) भुगतान और वितरण राज्य संक्रमण कदम को हटा दें।

2) इसके अलावा भुगतान_प्राप्त विधि को ओवरराइड करना।

3) इन चरणों को एप्लिकेशन / मॉडल / होड़ निर्देशिका के तहत order_decorator.rb में होना चाहिए।

checkout_flow do
go_to_state :address
# go_to_state :payment
go_to_state :complete
remove_transition :from => :delivery, :to => :confirm
remove_transition :from => :delivery, :to => :confirm
remove_transition :from => :payment, :to => :confirm
end
#Spree::Order.state_machine.before_transition :to => :payment, :do => :set_order

def set_order
self.create_proposed_shipments
end
def require_email
return false
end
def payment_required?
false
end

मैंने इसे 2-0 से देखा है।


उत्तर № 2 के लिए 1

क्षमा करें, मैं वास्तव में आपकी सहायता नहीं कर सकता: Spree 0.10.2 के साथ चेकआउट प्रक्रिया को अनुकूलित करना एक बुरा सपना है। लेकिन मैं स्प्री के हाल के संस्करण में स्विच करने की सलाह दूंगा, जैसे कि 1.3 स्थिर। यदि आप उस एक पर स्विच करते हैं, तो यह बनाना आसान होगा order_decorator.rb में फाइल your_app_folder/app/models/spree निम्नलिखित कोड के साथ:

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