Ravi de vous rencontrer, je m'appelle Irifune et je vais dans une école de programmation. Cet article est utilisé pour ma propre sortie en écrivant un dossier du développement d'applications personnelles, qui est un sujet de l'école. Si quelqu'un l'a lu, je vous serais reconnaissant de bien vouloir me faire part de vos commentaires.
Nous développerons un «outil de gestion des congés payés». Pour les spécifications, voir Articles précédents.
L'application sera déployée, mais elle n'est pas fournie en tant que service. Veuillez comprendre que ce n'est qu'une partie de l'auto-apprentissage. Passez ensuite au sujet principal.
Bien que cela ne soit pas mentionné dans l'article, j'ai créé un formulaire pour enregistrer la subvention et la digestion des vacances et un journal pour les afficher. Ci-dessous une photo.
Ceci est la forme. J'essaye de me reposer parce que je ne comprends pas Maître Taihei, mais ça me manquera cette fois.
Vient ensuite une vue pour vérifier l'historique de l'octroi des vacances et de la digestion. Nous l'avons mis en place car nous pensons qu'il sera nécessaire pour ceux qui l'entrent, comme par exemple vouloir vérifier la raison de la digestion de l'employé, ou vouloir vérifier s'ils se sont inscrits en vacances mais ne se sont pas inscrits de manière incorrecte. Vous pouvez également supprimer l'enregistrement de vacances.
Dans cet historique de digestion, la méthode est définie de manière à ce que «Grant», «Digest» et «Grant and Digest» soient affichés en bas à droite, mais les conditions ici sont liées à ce thème. Voici la partie méthode.
holiday.rb
class Holiday < ApplicationRecord
~ Omis ~
def add_or_delete
if add_day.nil?
"#{delete_day}Digestion"
elsif delete_day.nil?
"#{add_day}Date d'octroi"
else
"#{add_day}Avec octroi de date#{delete_day}Digestion"
end
end
end
La condition est de savoir si add_day (nombre de jours accordés) ou delete_day (nombre de jours digérés) est nul (vide), mais le problème est l'existence de "0".
Par exemple, si vous enregistrez 0 pour l'octroi et 1 pour la digestion lors de l'inscription pour les vacances, «0 jour d'octroi et 1 jour de digestion» sera affiché dans l'historique, ce qui est très gênant. Pour éviter cela, vous pouvez modifier la condition de la méthode définie dans le fichier modèle en "ni nul ni 0", mais après cela, il est difficile de définir cette condition pour chaque fonction à implémenter. Par conséquent, je souhaite empêcher "0" d'être enregistré lors du remplissage du formulaire.
Comme toujours, l'introduction est devenue longue, mais à partir de là, c'est le vrai sujet principal. Nous apporterons quelques améliorations afin que les colonnes de date d'attribution et de date de digestion ne contiennent que zéro ou un nombre supérieur ou égal à 1. Plus précisément, nous avons fait ce qui suit: Je ne sais pas si j'avais besoin de tous.
--Validation "exclusion"
La première chose que j'ai recherchée a été la validation car je ne voulais pas enregistrer 0. Quand je l'ai recherché, il y avait une validation appelée "exclusion" qui n'a pas enregistré de caractères spécifiques.
Article que j'ai utilisé comme référence [Rails] Explication complète! Maîtrisez comment utiliser la validation Rails!
Sur la base de l'article, j'ai essayé de le valider afin que les lettres «0» ne soient pas incluses à la date d'octroi et à la date de digestion.
holiday.rb
class Holiday < ApplicationRecord
validates :reason, presence: true
validates :add_day, exclusion: { in: [0]}
validates :delete_day, exclusion: { in: [0]}
~ Omis ~
end
Je l'ai mis à 0 et l'ai essayé, mais il semble qu'il ne soit pas enregistré. Au cas où, je l'ai donné pendant 10 jours, mais j'ai pu l'enregistrer correctement.
Cependant, comme il revient à l'index sans être sauvegardé, il devient difficile pour l'utilisateur de comprendre pourquoi il n'a pas été sauvegardé. Par exemple, j'ai tapé la date d'octroi comme 2 et la date de digestion comme 0, mais j'ai remarqué une erreur avant l'envoi, corrigé la date d'octroi à 0 et la date de digestion à 2, et appuyé sur le bouton d'envoi, mais il n'a pas été enregistré. Par conséquent, nous limiterons le formulaire lui-même afin que les nombres inférieurs à 1 ne puissent pas être saisis.
haml:holidays/new.html.haml
~ Omis ~
.field
.field-label
= f.label "Jours de digestion"
.field-input
= f.number_field :delete_day, max: "50", min: "1"
.field
.field-label
= f.label "Nombre de jours accordés"
.field-input
= f.number_field :add_day, max: "50", min: "1"
~ Omis ci-dessous ~
Ajout d'un maximum de 50 et d'un minimum de 1 à number_field. Cela permet de sélectionner seulement 1 à 50 avec les boutons en haut et en bas du formulaire. Dans le cas peu probable où vous saisissez manuellement 0 et essayez d'envoyer, une déclaration d'erreur apparaîtra en raison de la limitation de ce formulaire.
Maintenant que vous avez défini le 0 pour ne pas être enregistré et que le 0 ne peut pas être soumis sur le formulaire, nous allons également mettre en place un bouton de réinitialisation sur le formulaire au cas où. Je pensais que peu de gens se donnaient la peine de saisir manuellement 0, alors j'ai fait une erreur et c'est devenu 0, mais je ne peux pas le changer avec les boutons haut et bas du formulaire! !! C'est pour éviter la situation.
haml:holidays/new.html.haml
~ Omis ~
.btns
= f.button "réinitialiser", type: :reset, class: 'btn'
= f.button "enregistrement", type: :submit, class: 'btn'
Au début, j'ai écrit "f.reset ..." de la même manière que submit, mais cela n'a pas fonctionné, alors je l'ai vérifié à nouveau et je l'ai résolu dans l'article ci-dessous. L'article auquel j'ai fait référence "Comment implémenter le bouton de réinitialisation dans Rails"
J'ai oublié de prendre une capture d'écran de la vue finale, elle sera donc dans l'état après l'application du CSS, mais elle est complétée comme suit.
Jusqu'à présent, je me suis concentré uniquement sur les fonctions flashy, j'ai donc appris que ces fonctions sont également importantes. Je pense qu'en tant que développeur, vous devez être très prudent car il n'y a pas d'erreurs évidentes. D'autre part, une telle validation peut être ajoutée de plus en plus si nécessaire. J'ai également estimé que la quantité de travail augmenterait trop si elle n'était pas limitée au montant nécessaire et suffisant.
Recommended Posts