我正在制作一个简单的零售商务解决方案,其中有价格在几个不同的模型中。这些价格有助于总价格。想象一下,为您的酸奶选择一个顶部,多付0.30美元。Rails - 在Getter中格式化为货币格式的数字
当我price
字段设置为
t.decimal :price, precision:8, scale:2
数据库存储6.50
为6.5
。我知道在标准的rails方式中,您可以拨打number_to_currency(price)
来获取Views中的格式化值。我需要以编程方式调用price
字段以及格式化的字符串,即$ 6.50几个不直接属于视图的位置。另外,我的需求很简单(没有货币换算等),我更喜欢在模型中普遍地格式化价格,而不必在视图中重复调用number_to_currency。
有没有一种很好的方法可以修改我的吸气剂的价格,使其始终以美元符号返回两位小数,即$ 6.50时它被称为?
在此先感谢。
UPDATE
谢谢大家。
我选择使用亚历克斯的方法,因为它似乎非常'hackish'做包括只是为了格式化数字。用他的方法,我做了:
def price_change=(val)
write_attribute :price_change, val.to_s.gsub(/[\$]/,'').to_d
end
def price_change
"$%.2f" % self[:price_change]
end
干杯。
UPDATE 2
买者自负。一旦你这样做,你就失去了对数字进行操作的能力,因为它现在是一个字符串。
请小心是否有人面临与我一样的问题。
谢谢!认为必须内置一些数字格式。有一点担心将ActionView或ActionController包含到模型中。 – 2012-04-08 06:58:37
这个问题是你不能使用价格作为数字,它是一个字符串无处不在。我正在寻找一种方法,使铁扶手这种方式转换它to_s – Joelio 2014-03-20 21:53:22