Saisir les informations de commande sur le site EC sur le site EC ==> Je souhaite valider en saisissant les informations de commande entre les écrans de confirmation de commande
app/models/book.rb
validates :title, presence: true
Validation souvent utilisée comme
Il y a une colonne appelée titre dans la table des livres
Si la colonne de titre est vide lorsqu'elle est enregistrée dans la base de données, c'est-à-dire lorsque @ book.save (book_params), la validation sera appliquée.
Cependant, saisie des informations de commande sur le site EC ==> Écran de confirmation de commande
==> Lors de la mise en œuvre avec le flux de confirmation de commande (.save
est effectué ici), la saisie des informations de commande ==> Puisque .save
ne se produit pas entre les écrans de confirmation de commande, la validation appliquée au modèle est rendue. Puisqu'il ne peut pas être appelé avec, il est nécessaire d'écrire une branche conditionnelle dans l'instruction if et d'utiliser flash [: notice]
.
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] = "Toutes les nouvelles destinations n'ont pas été saisies"
redirect_to new_order_path
elsif params[:order][:new_add][:postal_code] == ""
flash[:notice] = "Aucun code postal n'a été saisi"
redirect_to new_order_path
elsif params[:order][:new_add][:address] == ""
flash[:notice] = "Adresse non saisie"
redirect_to new_order_path
elsif params[:order][:new_add][:name] == ""
flash[:notice] = "Aucune adresse n'a été saisie"
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
Tout d'abord, en utilisant l'instruction case, trois boutons radio sont écrits dans order / new.html.erb et trois modèles sont branchés à when. Et si vous sélectionnez le troisième bouton radio, vous pouvez saisir une nouvelle adresse de livraison lors de la saisie des informations de commande. [: new_add] est un paramètre permettant de saisir une nouvelle adresse de livraison lors de la saisie des informations de commande.
app/controllers/order_controllers.rb
params[:Valeur envoyée dans le formulaire] == ""
flash[:notice] ="Honya Honya"
Vous pouvez envoyer un message flash lorsqu'il est vide.
Initialement, il était réglé sur == nil et la valeur n'était pas retournée, mais quand j'ai regardé le terminal, c'était "", donc j'ai changé l'instruction de condition et cela a fonctionné. Lors de la connexion d'instructions conditionnelles avec &&, il est nécessaire d'égaliser à chaque fois au lieu de mettre un seul égal à la fin.
https://qiita.com/GreenFingers_tk/items/ed5219e1e0cdd5e5d1b1#new