-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Jun 7, 2007, at 18:48 , Jan Roesner wrote:
ich habe ein eigentlich trivial erscheinendes Problem, welchem ich
auch mit dem Rails Money Plugin momentan nicht beikommen kann. Ein
Nutzer soll Euro Beträge inklusive Cents eingeben können, und egal
ob ich die im Model als float, dezimal, oder integer deklariere,
kommen beim Validieren im Model nach der Eingabe die
Nachkommastellen nicht mit, wenn ein Nutzer statt dem "." ein ","
benutzt, was ja im deutschsprachigen Raum durchaus üblich ist. Also
den Punkt mit einem
def before_validation
self.price = bid_amount.to_s.gsub(/,/,'.').to_f
end
zu ersetzen, um das ganze dann danach sauber validieren zu können,
scheitert eben immer schon daran, dass die Nachkommastellen
garnicht erst mitkommen, wenn ein Komma eingegeben wird. Zur
Eingabe nutze ein ein textfield.
Was ist denn bid_amount genau? Ist das der String der aus deinem
textfield kommt? Wohl nicht, weil sonst muesstes du ja kein to_s machen.
Also ich hatte ein vielleicht aehnliches Problem, wo ich Datumsangaben
als String im Textfield hatte sie aber als Date in der Datenbank
speichern wollte. Wenn dein Feld also price heisst dann definierst du
dir einfach die Methoden price und price= die dann den String aus dem
Textfield nehmen und per read_attribute und write_attribute die Werte
korrekt formatieren. Wenn du das nicht willst (weil du ja wohl auf price
direkt zugreifen willst) dann definieren dir einfach andere Methoden
(vielleicht price_str= und price_str?) und setzt in der dann self.price
bzw. formatierst price als String. Und dazu musst du dann auch nur in
deiner Form den Namen aendern und alles (also new, update_attributes,
etc) funktioniert wie gehabt. Die Validierung kann dann auf deinem price
attribute stattfinden.
Wobei wohl float bei Geldbetraegen nicht ideal ist. Sagen zumindest
alle, so auch Agile Web Development with Rails (und schlaegt dann gleich
eine Loesung vor).
- --
Urban Hafner
Obere Seefeldstr. 12
82234 Wessling
Germany
http://bettong.net
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (Darwin)
iD8DBQFGaIKGggNuVCIrEyURAk/eAKC7PhiKL/5WLPYSgaOQ9RR0HznbWACfeOLt
gTPghr1IfQzCRXfxlFNtgu8=
=j0ry
-----END PGP SIGNATURE-----
_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug