配達と支払いのステップがないチェックアウトプロセスが必要です(代引きを受け入れる店で働いているので、住所のステップだけが必要です)。Spree 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 の IndexError#update "payment" は無効な名前です
後でトレースといくつかの同様のエラーを見て、site_extension.rb の checkouts_controller.rb からの 2 つのメソッドをやみくもにオーバーライドして、何もしないことにしました (それらは支払いを処理していると思われるため)。
def clear_payments_if_in_payment_state
end
def object_params
end
これを行うと、配送先住所と請求先住所のすべてのフィールドで検証エラーがスローされます。私は、checkouts_controller.rb のいくつかのメソッドをオーバーライドする必要があるという漠然とした考えを持っています。この概念が正しい場合、それらの方法は何ですか。