[RUBY] [Rails] So zeigen Sie Fehlermeldungen einzeln an

Ziel

ezgif.com-video-to-gif.gif

Entwicklungsumgebung

・ Ruby: 2.5.7 Schienen: 5.2.4 ・ Vagrant: 2.2.7 -VirtualBox: 6.1 ・ Betriebssystem: macOS Catalina

Annahme

Folgendes wurde implementiert.

Schlanke EinführungImplementierung der Posting-Funktion

Implementierung

1. Bearbeiten Sie application.rb

application.rb


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

    #Nachtrag
    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

[Erläuterung]

(1) Wenn kein Fehler auftritt, wird der HTML-Code unverändert angezeigt.

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

(2) Wenn ein Fehler vorliegt, zeigen Sie die Fehlermeldung am unteren Rand des Formulars an.

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

** ◎ Weisen Sie einer Variablen den Klassennamen der Instanz zu **

class_name = instance.object.class.name.underscore

** ◎ Weisen Sie einer Variablen den Methodennamen der Instanz zu **

method_name = instance.instance_variable_get(:@method_name)

** ◎ Erstellen Sie HTML für den Fehlermeldungsteil. ** ** **

"<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

Wenn "Bitte geben Sie einen Titel ein" angezeigt wird, # {I18n.t (" activerecord.attributes. # {Klassenname}. # {Methodenname} ")} In dem Teil, der dem "Titel" entspricht # {instance.error_message.first} ist Es wird der Teil, der "Bitte eingeben" entspricht.

2. Japanisieren Sie die Fehlermeldung

① Edelstein einführen

Gemfile


#Nachtrag
gem 'rails-i18n'

Terminal


$ bundle

② Bearbeiten Sie application.rb

application.rb


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

    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

③ Erstellen und bearbeiten Sie ja.yml

Terminal


$ touch config/locales/ja.yml

ja.yml


ja:
  activerecord:
    attributes:
      book:
        title:Titel
        body:Text

Recommended Posts

[Rails] So zeigen Sie Fehlermeldungen einzeln an
So zeigen Sie Fehlermeldungen auf Japanisch an
[Rails] So geben Sie Erfolgs- und Fehlermeldungen aus
[Rails] Verwendung von Flash-Nachrichten
[Rails] Anzeigen von Datenbankinformationen
[Schienen] Zeigen Sie Formularfehlermeldungen asynchron an
[Rails] Verwendung von video_tag zum Anzeigen von Videos
Wie schreibe ich Rails
So deinstallieren Sie Rails
Der Weg zur Japanisierung von Rails führt zu Fehlermeldungen
[Rails] Lösung für "Uglifier :: Error: Unerwartetes Zeichen '' '"
[Rails] So konvertieren Sie die UC-Zeitanzeige in die japanische Zeitanzeige
[Ruby on Rails] Individuelle Anzeige von Fehlermeldungen
Anzeigen von Fehlermeldungen und Erfolgsmeldungen bei der Registrierung als Benutzer
[Schienen] Wie poste ich Bilder?
So stellen Sie die Anzeigezeit in Rails auf japanische Zeit ein
[Rails] Verwendung von Enum
[Rails, JS] So implementieren Sie die asynchrone Anzeige von Kommentaren
[Rails] Verwendung von Enum
Wie man Schienenrouten liest
[Java] So zeigen Sie Wingdings an
Verwendung von Rails Join
So beenden Sie den Rails-Server
Wie schreibe ich Rails Seed
[Rails] Verwendung der Validierung
[Schienen] So deaktivieren Sie Turbolinks
[Rails] So verwenden Sie authenticate_user!
[Rails] So implementieren Sie Scraping
[Schienen] Wie man Samen macht
Wie schreibe ich Rails Routing
[Rails] So installieren Sie simple_calendar
[Rails] So installieren Sie reCAPTCHA
[RSpec] Testen von Fehlermeldungen, die unabhängig von Shoulda-Matchers festgelegt wurden
[Schienen] So zeigen Sie Bilder in der Ansicht an
[Schienen] Verwendung von Scope
So zeigen Sie Diagramme in Ruby on Rails an (LazyHighChart)
[Rails] So zeigen Sie eine Liste der Beiträge nach Kategorie an
[Schienen] Anzeigen von Informationen, die in der Datenbank gespeichert sind
[Rails] Wie man Edelstein "devise" benutzt
[Schienen] Verwendung von Geräten (Hinweis)
[Schienen] So verhindern Sie den Bildschirmübergang
Verwendung von Ruby on Rails
So stellen Sie Bootstrap auf Rails bereit
[Rails] So beschleunigen Sie das Docker-Compose
[Schienen] So fügen Sie neue Seiten hinzu
[Rails] Wie schreibe ich eine Ausnahmebehandlung?
[Rails] So installieren Sie ImageMagick (RMajick)
[Rails] So installieren Sie Font Awesome
[Rails] Verwendung von Active Storage