On Sunday 11 November 2007, Manuel W. wrote:
ich suche gerade nach einer Sinnvollen Lösung, wie man die
error_messages_for :model sortiert. habt ihr da irgend einen tipp für
mich? hab hier rapid web development mit ruby on rails liegen aber
den ansatz finde ich gar nicht ruby like und irgendwie auch sonst
viel zu aufwändig.
Welchen Ansatz? In den Beispielen dort heisst es eigentlich immer
<%= error_messages_for :user %>
<%= error_messages_for :product %>
…
Was willst du statt dessen haben?
da muss es doch irgendwas geben, damit ich die reihenfolge angeben
kann. ich stell mir das so vor. ich geb nen hash oder array in meinem
model oben an, danach soll das dann sortiert werden, geht so was?
“Das” == die ungültigen Attribute?
Die Reihenfolge, in der die Validierungsfehler ausgegeben werden hängt
davon ab, in welcher Reihenfolge in
ActiveRecord::Base::Errors#full_messages über @errors iteriert wird.
@errors ist einfach ein Hash, da ist die Reihenfolge unbestimmt.
Wenn du das im bestehenden Rails-Code ändern willst
def full_messages
full_messages = []
attribute_ordering musst du irgendwie in deiner Model-Klasse setzen und
von dort in Errors hinein bekommen. Zum Speicher empfehle ich ein Class
Inheritable Attribute.
Anders gesagt, die Sache ist nicht ganz trivial. Wenn du es selbst
machen willst/musst, geht es nicht ohne einen tiefen Blick in den Rails
Code.
Ich würde empfehlen, das Problem ganz anders zu lösen, nämlich durch
eine eigene Helper-Funktion für die Formatierung der Fehler, der man
als Option ein Array mit der Attributreihenfolge übergeben kann.
Michael
–
Michael S.
mailto:[email protected]
http://www.schuerig.de/michael/