2016-03-27 32 views
0

RoR4 uygulamam üzerinde Solidus taş dahil olmak üzere çalışıyorum. Frontend'in checkout_controller # update yöntemini (here'da bulunur) geçersiz kılmaya çalıştığımda.Solidus/Spree + Geçersiz kılma denetleyicisi

Denetleyiciyi Spree's documents'a göre geçersiz kıldım, ancak bana uninitialized constant OrderUpdateAttributes hatası verdi. Ben (kendi çıkış sonrası) bir emir tamamlandıktan sonra biraz hareket yürütmek amacıyla bu yöntemi geçersiz kılmak için gerekli

Spree::CheckoutController.class_eval do 
    def update 
    if OrderUpdateAttributes.new(@order, update_params, request_env: request.headers.env).apply 
    @order.temporary_address = !params[:save_user_address] 
    success = if @order.state == 'confirm' 
     @order.complete 
    else 
     @order.next 
    end 
    if !success 
     flash[:error] = @order.errors.full_messages.join("\n") 
     redirect_to(checkout_state_path(@order.state)) && return 
    end 

    if @order.completed? 
     @current_order = nil 
     flash.notice = Spree.t(:order_processed_successfully) 
     flash['order_completed'] = true 
     redirect_to completion_route 
    else 
     redirect_to checkout_state_path(@order.state) 
    end 
    else 
    render :edit 
    end 
end 

/app/controllers/spree/checkout_controller_decorator.rb olarak

CheckoutController#update

adını verdi. Bu hatayı yapmak için eksik olduğum bir şey var mı? Ya da eylemi yürütmek için başka bir yolu?

cevap

0

Bu durumu ele almanın en iyi yolunun, durum makinesini model düzeyinde kullanması olduğunu düşündüm. Bu eylem için, daha fazla belge here bulunabilir ve daha doğrusu, core/app/models/spree/order.rb üzerinde bulunan çekirdek order modelinde geçersiz kılmak için dekoratör kullanmak için.