2017-08-21 3 views
0

In den meisten Fällen finde ich, dass Rails Standard-Fehlermeldungen für die meisten integrierten Validatoren für mich gut funktionieren. Ich habe jedoch auch einige Validierungen für einige Modelle, bei denen das Standardformat "{{attribute}} {{message}}" full_message einfach keinen semantischen Sinn ergibt. Ich weiß, dass ich die Nachrichten anstelle der full_messages anzeigen kann, aber das würde bedeuten, dass ich meine eigenen Nachrichten zu jeder integrierten Überprüfung hinzufügen muss, weil andernfalls der Attributname abgehackt würde.Rails Validierungen, Mischen von Nachrichten und full_messages

Gibt es eine Möglichkeit, das Standardformat full_message zu verwenden, aber die full_message für eine Handvoll Validierungen direkt zu überschreiben, um ein anderes Format oder eine bestimmte Zeichenfolge zu verwenden? Gibt es eine natürliche Möglichkeit, die Standardvalidierungsnachrichten mit einigen benutzerdefinierten zu mischen, die nicht mit dem Attributnamen beginnen?

+1

Ich denke, dass Sie implementieren möchten, was in dieser Antwort beschrieben wird: https://stackoverflow.com/a/2859275/3741320 –

+1

Die dort genannte Methode "add_to_base" war genau das, was ich brauchte, außer dass es war veraltet und wurde schließlich in 4.2 entfernt, und ich verwende Rails 5. Die neue Syntax ist anscheinend 'errors (: base," message ")'. Mit anderen Worten, wenn Sie: basic als Attributssymbol verwenden, fügt Rails * den Attributnamen * Ihrer Nachricht nicht hinzu. – xanderflood

Antwort

0

Sie können benutzerdefinierte Nachrichten an config/locales/en.yml

+0

Das scheint mein Problem nicht zu lösen. Ich kann meine Nachrichten dort speichern, aber I18n fügt immer noch automatisch den Attributnamen hinzu. – xanderflood

0

In Rails 4, die errors.add_to_base("Something is terribly wrong!") fügen hinzu, um einen Fehler zu dem Basismodell anstelle ein Attribut, und in diesem Fall hinzufügen full_message die gleiche Sache zurück als message ohne vorangestellten Attributnamen.

Dies wurde in Schienen 4.2 entfernt, und die neue Art, es zu tun ist mit errors.add(:base, "Something is terribly wrong!").

Verwandte Themen