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
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.
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
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.
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.
https://qiita.com/GreenFingers_tk/items/ed5219e1e0cdd5e5d1b1#new