Estoy haciendo una solución de comercio minorista simple, donde hay precios en algunos modelos diferentes. Estos precios contribuyen a un precio total . Imagínese pagar $ 0.30 más por seleccionar un aderezo para su yogurt.Rieles - Formato de número como formato de moneda en el Getter
Cuando defina el campo price
a
t.decimal :price, precision:8, scale:2
Los datos almacena 6.50
como 6.5
. Sé de manera estándar los rieles, llame al number_to_currency(price)
para obtener el valor formateado en las Vistas. Necesito llamar programáticamente al campo price
como una cadena con formato, es decir, $ 6.50 unos pocos lugares que no son directamente parte de la Vista. Además, mis necesidades son simples (no hay conversión de moneda, etc.), prefiero que el precio se formatee universalmente en el modelo sin repetidas llamadas number_to_currency en las vistas.
¿Hay alguna manera de modificar mi buscador de forma tal que siempre devuelva dos cifras decimales con un signo de dólar, es decir, $ 6.50 cuando se llame?
Gracias de antemano.
ACTUALIZACIÓN
Gracias a todos.
He elegido utilizar el enfoque de Alex porque parece muy 'hackish' hacer las inclusiones solo para formatear el número. Usando su enfoque, lo hice:
def price_change=(val)
write_attribute :price_change, val.to_s.gsub(/[\$]/,'').to_d
end
def price_change
"$%.2f" % self[:price_change]
end
Saludos.
ACTUALIZACIÓN 2
caveat.emptor. Una vez que haces esto, pierdes la capacidad de hacer operaciones al número porque ahora es una cadena.
Tenga cuidado si alguien se enfrenta al mismo problema que yo.
Gracias! Estaba pensando que debe haber un formato de número incorporado. Un poco cauteloso de incluir ActionView o ActionController en el modelo. –
El problema con esto es que no puedes usar el precio como un número, es una cadena en todas partes. Estoy buscando una manera de hacer que el rails helper lo convierta de esta manera en el to_s – Joelio