Coma/Punto Decimal Campo de Entrada


#1

Buenas tardes, tengo un problema, tengo un campo decimal en la base de
datos. Y me gustaría que al poner los valores con comas en el
formulario(Ej. 12,5) el valor lo guardase, el problema esque no lo
interpreta correctamente a no ser que sea con un punto (Ej. 12.5).

He estado buscando en google y no he visto forma de que a la hora de
recibir el campo en el formulario, interprete correctamente la coma.

Esto es lo que guarda en la bdd.
12,5 => 12
12.5 => 12.5

Gracias.


#2

Tal vez una salida podria ser redefinir el ‘writer’ de este attributo en
tu
modelo y reemplazar su valor mediante gsub:

def attr=(value)
write_attribute(:attr, value.gsub(/,(\d+)\Z/,’.\1’)
end

Saludos!


#3

Pues parece que sí que funciona. Me ha tocado hacer un pequeño retoque a
esa función, puesto que daba error al intentar convertir la coma a punto
ya que al ser un Decimal daba error. Así que la he dejado así:

def attr=(value)
write_attribute(:attr, value.to_s.gsub(/,(\d+)\Z/,’.\1’)
end

Gracias!