[RUBY] Prozessvalidierungsnachricht mit Decorator

Beachten Sie, dass ich die Validierungsnachricht aufgrund einiger unglücklicher Umstände verarbeiten wollte, nachdem sie gemäß dem Eingabemuster des Formulars generiert wurde. Angenommen, Sie haben das folgende Formular.

new.slim


= form_for post_form, url: confirm_post_path do |f|
  - if post_form.errors.present?
    ul
      - post_form.errors.full_messages.each do |msg| 
        li = msg

Angenommen, Sie haben die Anforderung zum Ändern der Validierungsnachricht hinzugefügt, wenn Sie eine bestimmte Option im Formular auswählen. In diesem Fall ist Errors.full_messages ein Array, daher habe ich den Inhalt einzeln mit Decorator überprüft und durch Brute Force ersetzt.

new.slim


= form_for post_form, url: confirm_post_path do |f|
  - post_form_decorator = ::PostFormDecorator.new(f.object)
  - if post_form.errors.present?
    ul
      - post_form_decorator.post_error_display(post_form.errors.full_messages).each do |msg|
        li = msg

post_form_decorator.rb


class PostFormDecorator
  delegate_missing_to :@post_form

  def initialize(post_form)
    @post_form = post_form
  end

  def post_error_display(error_full_messages)
    error_full_messages.each do |msg|
      if @post_form.category == 'music'
        msg.gsub!(/#{@post_form.model.class.human_attribute_name(:author)}/, 'Sänger')
      end
    end
  end
end

Beachten Sie, dass der Inhalt durch eine destruktive Methode ersetzt wird, sodass er nur durch gsub ersetzt wird, wenn Sie ein "!" Hinzufügen.

Recommended Posts

Prozessvalidierungsnachricht mit Decorator
Validierung von JSON mit JSON-Schema
Selbstgemachte Validierung mit Spring
[macOS] Zielaktion mit Kombinieren verarbeiten
Validierung von Protokollnachrichten mit mockito
Erhalten Sie Validierungsergebnisse mit Spring Boot
Bean Validation mit Micronaut (Java) hinzufügen
Einfache Eingabeprüfung mit Bean Validation!
Prozesskommunikation mit AMQP mit RabbitMQ