2015-12-01 9 views
6

Ho implementato la verifica del telefono nell'applicazione Spree.L'email di Spree Guest viene salvata

Quindi l'utente deve verificare il numero di telefono prima di effettuare un ordine, ma una volta che l'utente ha effettuato l'ordine come ospite, la volta successiva che la sua e-mail è archiviata va direttamente a /checkout/address senza andare a /checkout/registration prima.

Dove posso modificare il codice in modo che gli ospiti cassa va sempre al primo /checkout/registration

Edit:

ho controllato i checkout_controller e credo di poter modificare la funzionalità utilizzando checkout#edit azione.

Ma non riesco a trovarlo nei file gem.

+0

Aggiungi la versione Spree per favore. – cassioscabral

risposta

4

Si potrebbe creare un decoratore per il checkout_controller come app/controllers/spree/checkout_controller_decorator.rb e cambiare questo method a qualcosa di simile al di sotto (codice per il file decorator):

module Spree 
    CheckoutController.class_eval do 
    def before_address 
     # if the user has a default address, a callback takes care of setting 
     # that; but if he doesn't, we need to build an empty one here 
     if current_user.phone_number.present? 
     @order.bill_address ||= Address.build_default 
     @order.ship_address ||= Address.build_default if @order.checkout_steps.include?('delivery') 
     else 
     # some error telling that you need to fill the phone number 
     redirect_to registration_path 
     end 
    end 
    end 
end 

essere consapevoli che dopo che l'utente si viene reindirizzato farebbe devono fare i conti con il reindirizzamento alla pagina di checkout

È possibile modificare qualcosa sul modello Utente anche per assicurarsi che l'utente abbia un numero di telefono, tuttavia potrebbe essere in conflitto con la funzione ospite.

+0

sto ricevendo "Indirizzo costante non inizializzato" sulla riga "@ order.bill_address || = Address.build_default" – Aitizazk

+0

Ho cambiato la risposta, prova ora. Il codice non è completo è solo un'intuizione o una direzione su come potresti risolvere, troverai qualcosa da modificare qua e là. Il modulo è necessario, altrimenti sarebbe richiesto di utilizzare Spree :: Indirizzo anche – cassioscabral

+0

Grazie mille che ha aiutato :) – Aitizazk

Problemi correlati