[英]How to customize Spree checkout process?
我的環境。
Mac OSX 10.7.4
Ruby 1.9.3p0
Rails 3.2.3
Spree 1.1.0
您好,我是Spree的日本程序員和新手。 我想自定義Spree的結帳流程,以刪除結帳步驟,例如選擇送貨方式和付款方式。
根據Spree指南 ,我需要為Order
模型定義一個全新的狀態機。
因此,我將order_decorator.rb
添加到app/models
目錄,如下所示。
# 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
另外,我將spree_site.rb
文件添加到我的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
但是,似乎根本沒有變化。 有人知道我應該在哪里修改以自定義結帳流程嗎?
請提出一些不錯的狂歡教程或建議。 我真的很感謝任何建議。
先感謝您。
您需要在Spree命名空間中,覆蓋Spree :: Order而不是簡單地訂購。
我認為您的訂單裝飾器看起來應該有所不同。 只需制作一個文件app/models/spree/order_decorator.rb
然后像這樣開始
Spree::Order.class_eval do
state_machine do
before_transition to: "address" do |order|
...
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.