我正在製作一個簡單的零售商務解決方案,其中有價格在幾個不同的模型中。這些價格有助於總價格。想象一下,爲您的酸奶選擇一個頂部,多付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