0

Ich versuche, Benutzern bessere Validierungsfehlermeldungen zu präsentieren. Zum Beispiel kann eine gegebene Eindeutigkeit Validierungsnachricht sagt etwas entlang der Linien von:Gibt es eine Möglichkeit, Attributwerte aus der Box mit i18n und Rails 4 zu interpolieren?

Schüler bereits in diesem Kurs

jedoch eingeschrieben ist, möchte ich es sagen:

Studenten Leroy Jenkins ist bereits in Calculus II eingeschrieben

Der Grund ist, weil ich ein verschachteltes Formular habe, das viele students_courses zur gleichen Zeit erstellt, so dass der Benutzer ein halbes Dutzend dieser Nachrichten sehen kann und sie nicht wissen, welche Schüler ungültig sind.

Bietet ActiveRecord eine Option, um automatisch die Attribute des Modells für die Interpolation zu erhalten? Etwas wie %{model.student.name}? Wenn nicht, weiß ich schon, wie man Parameter für die Interpolation manuell übergibt, ich frage nur, ob es einen besseren Weg gibt, es zu tun.

Btw, muss es i18n verwenden, da wir mehr als 1 Sprache unterstützen müssen.


Die Fehlermeldung, die oben in der en.yml Datei unter dieser Struktur gelegt wurde:

http://guides.rubyonrails.org/i18n.html#error-message-interpolation

:

für Fehlermeldung-Interpolation
activerecord: 
    errors: 
    models: 
     students_courses: 
     taken: "is already enrolled in this course" 

Antwort

1

, was Sie in dieser Dokumentation zu sehen ist verwenden Für Ihren Anwendungsfall bedeutet das nein, Sie können hier nicht mit dem Modell spielen. was Sie tatsächlich bekommen, ist value in Ihrem Fall, dass die ID des Kurses wäre, denke ich.

aber es sollte nicht so schlimm sein, könnten Sie die Logik der UniquenessValidator anpassen, indem Sie eine neue oder ähnliche erstellen und diese für Ihre Validierungen verwenden.