[RUBY] [Rails] Comment afficher les messages d'erreur individuellement

Cible

ezgif.com-video-to-gif.gif

Environnement de développement

・ Rubis: 2.5.7 Rails: 5.2.4 ・ Vagrant: 2.2.7 -VirtualBox: 6.1 ・ Système d'exploitation: macOS Catalina

supposition

Ce qui suit a été mis en œuvre.

Présentation minceMise en œuvre de la fonction de publication

la mise en oeuvre

1. Editez ʻapplication.rb`

application.rb


module Bookers2Debug
  class Application < Rails::Application
    config.load_defaults 5.2

    #Postscript
    config.action_view.field_error_proc = Proc.new do |html_tag, instance|
      if instance.kind_of?(ActionView::Helpers::Tags::Label)
        html_tag.html_safe
      else
        class_name = instance.object.class.name.underscore
        method_name = instance.instance_variable_get(:@method_name)
        "<div class=\"has-error\">#{html_tag}
          <span class=\"help-block\">
            #{I18n.t("activerecord.attributes.#{class_name}.#{method_name}")}
            #{instance.error_message.first}
          </span>
        </div>".html_safe
      end
    end
  end
end

[Explication]

(1) Si aucune erreur ne se produit, le code HTML s'affiche tel quel.

if instance.kind_of?(ActionView::Helpers::Tags::Label)
  html_tag.html_safe

(2) S'il y a une erreur, affichez le message d'erreur en bas du formulaire.

else
  class_name = instance.object.class.name.underscore
  method_name = instance.instance_variable_get(:@method_name)
  "<div class=\"has-error\">#{html_tag}
    <span class=\"help-block\">
      #{I18n.t("activerecord.attributes.#{class_name}.#{method_name}")}
      #{instance.error_message.first}
    </span>
  </div>".html_safe

** ◎ Attribuez le nom de classe de l'instance à une variable **

class_name = instance.object.class.name.underscore

** ◎ Attribuez le nom de méthode de l'instance à une variable **

method_name = instance.instance_variable_get(:@method_name)

** ◎ Créez du HTML pour la partie message d'erreur. ** **

"<div class=\"has-error\">#{html_tag}
  <span class=\"help-block\">
    #{I18n.t("activerecord.attributes.#{class_name}.#{method_name}")}
    #{instance.error_message.first}
  </span>
</div>".html_safe

Si "Veuillez saisir un titre" s'affiche, # {I18n.t (" activerecord.attributes. # {Class_name}. # {Method_name} ")} Dans la partie correspondant au "titre" # {instance.error_message.first} est Il devient la partie correspondant à "Veuillez entrer".

2. Message d'erreur Japaneseize

① Présentez Gem

Gemfile


#Postscript
gem 'rails-i18n'

Terminal


$ bundle

② Editez ʻapplication.rb`

application.rb


module Bookers2Debug
  class Application < Rails::Application
    config.load_defaults 5.2
    config.i18n.default_locale = :ja #Postscript

    config.action_view.field_error_proc = Proc.new do |html_tag, instance|
      if instance.kind_of?(ActionView::Helpers::Tags::Label)
        html_tag.html_safe
      else
        class_name = instance.object.class.name.underscore
        method_name = instance.instance_variable_get(:@method_name)
        "<div class=\"has-error\">#{html_tag}
          <span class=\"help-block\">
            #{I18n.t("activerecord.attributes.#{class_name}.#{method_name}")}
            #{instance.error_message.first}
          </span>
        </div>".html_safe
      end
    end
  end
end

③ Créez et modifiez ja.yml

Terminal


$ touch config/locales/ja.yml

ja.yml


ja:
  activerecord:
    attributes:
      book:
        title:Titre
        body:Texte

Recommended Posts

[Rails] Comment afficher les messages d'erreur individuellement
Comment afficher les messages d'erreur en japonais
[Rails] Comment émettre des messages de réussite et d'erreur
[Rails] Comment utiliser les messages flash
[rails] Comment afficher les informations de base de données
[Rails] Afficher les messages d'erreur du formulaire de manière asynchrone
[Rails] Comment utiliser video_tag pour afficher des vidéos
Comment écrire des rails
Comment désinstaller Rails
La route vers la japonaisisation des rails conçoit des messages d'erreur
[Rails] Solution pour "Uglifier :: Erreur: caractère inattendu" ""
[Rails] Comment convertir l'affichage de l'heure UC en affichage de l'heure japonais
[Ruby on Rails] Affichage individuel des messages d'erreur
Comment afficher les messages d'erreur et les messages de réussite lors de l'inscription en tant qu'utilisateur
[rails] Comment publier des images
Comment régler l'heure d'affichage sur l'heure japonaise dans les rails
[Rails] Comment utiliser enum
[Rails, JS] Comment implémenter l'affichage asynchrone des commentaires
[Rails] Comment utiliser enum
Comment lire les itinéraires des rails
[Java] Comment afficher les Wingdings
Comment utiliser la jonction de rails
Comment terminer le serveur de rails
Comment écrire des graines de Rails
[Rails] Comment utiliser la validation
[Rails] Comment désactiver les turbolinks
[Rails] Comment utiliser authenticate_user!
[Rails] Comment mettre en œuvre le scraping
[Rails] Comment faire des graines
Comment écrire le routage Rails
[Rails] Comment installer simple_calendar
[Rails] Comment installer reCAPTCHA
[RSpec] Comment tester les messages d'erreur définis indépendamment par Shoulda-Matchers
[Rails] Comment afficher les images dans la vue
[Rails] Comment utiliser Scope
Comment afficher des graphiques dans Ruby on Rails (LazyHighChart)
[Rails] Comment afficher une liste de messages par catégorie
[Rails] Comment afficher les informations stockées dans la base de données dans la vue
[Rails] Comment utiliser la "devise" des gemmes
[Rails] Comment utiliser l'appareil (Remarque)
[Rails] Comment empêcher la transition d'écran
Comment utiliser Ruby on Rails
Comment déployer Bootstrap sur Rails
[Rails] Comment accélérer la composition de docker
[Rails] Comment ajouter de nouvelles pages
[Rails] Comment écrire la gestion des exceptions?
[Rails] Comment installer ImageMagick (RMajick)
[Rails] Comment installer Font Awesome
[Rails] Comment utiliser Active Storage