[RUBY] (EC-Site) Validierung bei der Eingabe von Bestellinformationen

Voraussetzungen

Geben Sie die Bestellinformationen auf der EC-Site auf der EC-Site ein. ==> Ich möchte die Bestellung bestätigen, indem Sie die Bestellinformationen zwischen den Bestellbestätigungsbildschirmen eingeben

1. Häufig verwendete Validierung

app/models/book.rb


validates :title, presence: true

Validierung, die häufig verwendet wird, wie z In der Büchertabelle befindet sich eine Spalte namens Titel Wenn die Titelspalte beim Speichern in der Datenbank leer ist, dh wenn @ book.save (book_params), wird die Validierung angewendet. Eingabe der Bestellinformationen auf der EC-Website ==> Bestellbestätigungsbildschirm ==> Bei der Implementierung mit dem Ablauf der Auftragsbestätigung (hier wird .save ausgeführt) wird die Auftragsinformation eingegeben ==> Da .save nicht zwischen den Auftragsbestätigungsbildschirmen auftritt, wird die auf das Modell angewendete Validierung gerendert. Da es nicht mit aufgerufen werden kann, ist es notwendig, einen bedingten Zweig in die if-Anweisung zu schreiben und flash [: Notice] zu verwenden.

2. Implementierung der if-Anweisung

app/controllers/order_controllers.rb


when 3
        if    params[:order][:new_add][:postal_code] == "" && params[:order][:new_add][:address] == "" && params[:order][:new_add][:name] == ""
              flash[:notice] = "Es wurden nicht alle neuen Ziele eingegeben"
              redirect_to new_order_path
        elsif params[:order][:new_add][:postal_code] == ""
              flash[:notice] = "Es wurde keine Postleitzahl eingegeben"
              redirect_to new_order_path

        elsif params[:order][:new_add][:address] == ""
              flash[:notice] = "Adresse nicht eingegeben"
              redirect_to new_order_path
        elsif params[:order][:new_add][:name] == ""
              flash[:notice] = "Es wurde keine Adresse eingegeben"
              redirect_to new_order_path
        else
            @order.postal_code = params[:order][:new_add][:postal_code]
            @order.address = params[:order][:new_add][:address]
            @order.name = params[:order][:new_add][:name]
        end
 end

3. Codebeschreibung

Zunächst werden mithilfe der case-Anweisung drei Optionsfelder in der Reihenfolge / new.html.erb geschrieben und drei Muster zu dem Zeitpunkt verzweigt. Wenn Sie das dritte Optionsfeld auswählen, können Sie bei der Eingabe der Bestellinformationen eine neue Lieferadresse eingeben. [: new_add] ist ein Parameter zur Eingabe einer neuen Lieferadresse bei der Eingabe von Bestellinformationen.

app/controllers/order_controllers.rb


params[:Wert im Formular gesendet] == ""
flash[:notice] ="Honya Honya"

Sie können eine Flash-Nachricht senden, wenn diese leer ist.

4. Nach dieser Implementierung

Anfangs war es auf == nil gesetzt und der Wert wurde nicht zurückgegeben, aber als ich mir das Terminal ansah, war es "", also habe ich die Bedingungsanweisung geändert und es hat funktioniert. Wenn Sie bedingte Anweisungen mit && verbinden, müssen Sie jedes Mal gleich sein, anstatt am Ende nur eine gleich zu setzen.

5. Referenzseite

https://qiita.com/GreenFingers_tk/items/ed5219e1e0cdd5e5d1b1#new

Recommended Posts

(EC-Site) Validierung bei der Eingabe von Bestellinformationen
Erstellen Sie eine EC-Site mit Rails 5 ⑩ ~ Erstellen Sie eine Bestellfunktion ~
Fehler beim Bereitstellen von EC2