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 app / vues / contact_mailer / contact_email.html.erb: p> Formulaire de contact: p> Actuellement, l'e-mail envoie toujours au compte sans validation telle que "Vous devez remplir ce champ" P> P> Site Web:
3 Réponses :
Créer un modèle pour votre message de contact. Quelque chose comme: 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
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 code> 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 code> 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 code> du DOM. Il postera, pas de problème. L'utilisation de l'attribut
requise code> 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 code> lui donne les méthodes que j'ai discutées.
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" />
En regardant le code de votre formulaire, je vois plusieurs problèmes:
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>
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?