[RUBY] (Site CE) Validation lors de la saisie des informations de commande

Conditions préalables

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

1. Validation fréquemment utilisée

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].

2. Mise en œuvre de la déclaration if

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

3. Description du code

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.

4. Après cette mise en œuvre

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.

5. Site de référence

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

Recommended Posts

(Site CE) Validation lors de la saisie des informations de commande
Créer un site EC avec Rails 5 ⑩ ~ Créer une fonction de commande ~
Erreur lors du déploiement d'EC2