困惑的Rails 3新手。我的模型的purchase_price属性定义如下:
t.decimal :purchase_price, :precision => 12, :scale => 2, :default => 0.00
我的目标是拥有一个简单的Rails 3应用程序,我可以在其中查看和编辑此值。在我的模型中,我定义了一个自定义的getter来强制2位小数始终存在。
def purchase_price
sprintf( "%.2f",attributes['purchase_price'])
end
这可以从控制台和我显示节目页面时正常工作。在编辑页面上,我有一个文本字段来编辑这个值。我的问题是,如果此值保存为' 123.00'该值显示为' 123.0'。
问题:
更新
答案 0 :(得分:2)
试试这个
f.text_field :purchase_price, :value=>number_to_currency(f.object.purchase_price, :unit=>'')
这应该将数字转换为货币(两位小数),而:unit=>''
将不包括“$”。
我建议您删除自定义purchase_price
方法,并在需要时使用number_to_currency
帮助程序。覆盖purchase_price
访问器并不是一个坏主意,但它可能会混淆一些可能期望数字而不是字符串的东西。