0
votes

Comment ajouter la validation au formulaire de contact?

J'essaie d'ajouter un formulaire de contact aux utilisateurs à remplir et il sera automatiquement envoyé par courrier électronique au compte principal. Je ne sais pas comment puis-je ajouter une validation au formulaire afin que les utilisateurs ne puissent pas cliquer sur "Envoyer un e-mail" sans remplir les champs.

J'ai essayé actuellement l'ajout de Site Web:

app / vues / contact_mailer / contact_email.html.erb: xxx

Formulaire de contact: xxx

Actuellement, l'e-mail envoie toujours au compte sans validation telle que "Vous devez remplir ce champ"


3 commentaires

Vous devriez ajouter le code de votre formulaire


@Julien s'il vous plaît voir la poste mise à jour


Pourquoi avez-vous 2 éléments de forme?


3 Réponses :


0
votes

Créer un modèle pour votre message de contact. Quelque chose comme: xxx pré>

alors inclure activemodel :: Modèle code> Pour obtenir la validation de Activemodel et indiquez le modèle que les champs valident, comme: P>

new_mail = ContactEmail.new(params['name'], params['email'], params['message'])
if new_mail.valid?
  ...
else
  flash.now[:error] = new_mail.errors.full_messages
end


5 commentaires

L'OP a demandé une solution pour empêcher la soumission de formulaire, ne pas aller sur un aller-retour et la validation du côté serveur


Lors de l'ajout d'un requis est excellent, la validation doit être effectuée sur le côté du serveur pour empêcher la falsification. Faire la validation du côté de la clientèle et du côté serveur est exactement ce que je ferais.


Je suis tout à fait d'accord, je viens de dire que ce n'est pas ce que l'OP a demandé


Hors de curiosité, quel type d'altération exact de la validation du serveur empêche-t-il? Et, Contactemail n'est-il pas un modèle de rails, est-ce? Cela semble être un poro.


Je peux inspecter l'élément d'entrée, le voir dans les outils de développement et supprimer l'attribut requis du DOM. Il postera, pas de problème. L'utilisation de l'attribut requise sur l'entrée est bonne ux, mais cela ne devrait pas être invoqué. Et oui, c'est un vieux objet rubis clair, mais la ligne include activemodel :: Modèle lui donne les méthodes que j'ai discutées.



0
votes

Pourriez-vous utiliser les attributs de formulaire HTML? Il existe un attribut requis pour que l'utilisateur ne puisse pas laisser le champ vide. Par exemple,

<input required id="email" class="input" name="email" type="email" value="" size="30"  />


0 commentaires

0
votes

En regardant le code de votre formulaire, je vois plusieurs problèmes:

  • Vous avez 2 code> ouvertures li>
  • je ne vois aucun fichier fichier code> de sorte que vous n'avez pas besoin du encype = "multipart / form-données" code> li> ul>

    Voici le code révisé (j'ai supprimé le premier élément de formulaire, j'ai ajusté l'action code> du deuxième formulaire, j'ai ajouté requis code > Attributs aux entrées et Textarea et j'ai mis à jour le type d'entrée par courrier électronique sur "Email" pour vous assurer que seuls les courriels valides sont entrés). Ajouter requis code> doit forcer les navigateurs modernes à prévenir la soumission de formulaire si les entrées ne sont pas remplies correctement. P>

    <h1>Any enquiries:</h1>
    <center>
    <table width="700px">
    
    
    
    <form id="contact_form" action="/pages/send_form" method="POST">
    
      <div class="row">
        <label for="name">Your Name:</label><br />
        <input id="name" class="input" name="name" type="text" value="" size="30" required /><br />
      </div>
    
      <div class="row">
        <label for="email">Your Email:</label><br />
        <input id="email" class="input" name="email" type="email" value="" size="30" required /><br />
      </div>
    
      <div class="row">
        <label for="message">Your Message:</label><br />
        <textarea id="message" class="input" name="message" rows="7" cols="30" required></textarea><br />
      </div>
      <input id="submit_button" type="submit" value="Send email" />
    
    </form> 
    


0 commentaires