J'écrirai sur la façon d'afficher le message d'erreur. J'écrirai également brièvement sur render, redirect_to et flash, qui sont souvent utilisés lors de la sortie de messages avec Rails.
Afficher le message d'erreur suivant en cas d'erreur dans la valeur d'entrée du formulaire
login_controller.rb
@error_txt = '* Il y a une erreur dans l'entrée ou elle n'est pas enregistrée.'
render :new
Définissez la variable d'instance @error_txt sur un message d'erreur et spécifiez que le rendu doit afficher le nouveau modèle.
new.html.slim
- if @error_txt
p.error
= @error_txt
Du côté du modèle, l'existence de la valeur de @error_txt de la variable d'instance est vérifiée, et @error_txt est affiché s'il y en a.
render est une méthode pour spécifier un modèle et l'afficher (le rendre). Il peut être affiché sans changer d'écran.
Semblable à render, redirect_to est une méthode pour spécifier et afficher une page. Pendant que le rendu affiche le modèle spécifié sans transition d'écran La méthode redirect_to est une méthode de redirection et demande au navigateur de renvoyer la demande en spécifiant l'URL. En réponse à cette commande, le navigateur envoie une autre requête au serveur pour l'URL spécifiée. Si vous n'avez pas besoin de renvoyer la demande car l'interaction et le traitement entre le navigateur et le serveur vont augmenter, il est préférable d'utiliser le rendu.
Cette fois, j'utilise le rendu car je veux juste afficher un message d'erreur pour le contenu d'entrée du formulaire et je ne veux pas rediriger.
Si vous regardez l'affichage des messages sur les rails, vous trouverez de nombreux articles sur le flash. flash est l'une des fonctions utilisant la session et est une méthode pour afficher un message à l'écran. Le message défini par flash est enregistré dans la session et est conservé même s'il est redirigé, de sorte que la méthode redirect_to est souvent utilisée ensemble.
Cette fois, j'utilise render, j'ai utilisé des variables d'instance au lieu de flash car il n'y a pas de redirection et je n'ai pas besoin de conserver la valeur dans la session.
Recommended Posts