我正在使用Rails 3.2.5,当它返回值o:price进行编辑时,它只会带一个小数,例如。 600.0,我需要我带来2位小数(例如600.00)在数据库中记录600.00,在我的区域设置我已经设置为2位小数,但仍然无法工作。
我试过
number_to_currency(:price, :precision => 2)
但它适用于像“show”这样的视图,我需要在textfield上返回编辑的propper值。
在我的迁移中,字段“price”设置为十进制(15,2)。
有人可以帮忙吗?
谢谢!
答案 0 :(得分:3)
文本字段在字段的“本机”值上运行,因为它由ActiveRecord处理,而不是存储在数据库中。
货币字段很棘手,因为ActiveRecord正在数据库表示和ruby / rails表示之间进行转换,即BigDecimal。
如果您的目标是希望向用户展示$1,000.00
并让他们对其进行编辑,则可以采取以下建议:
number_to_currency
来显示该值。单击时,输入字段将显示没有货币符号的值,数千个分隔符的逗号等。请注意,这是Excel的工作方式:编辑货币字段的值时,不要输入1,000。你输入1000。答案 1 :(得分:1)
根据我的经验,不是使用小数来存储货币,而是以整数形式存储以美分为单位的金额。这将解决多个问题,包括您现在拥有的问题。
过去使用Money gem及其伴侣money-rails取得了很大的成功。
答案 2 :(得分:1)
使用'delocalize'宝石解决了问题。 老但金! :)谢谢大家!
答案 3 :(得分:0)
让text_field显示格式化值的最简单方法是显式传递它,如下所示:
f.text_field :price, :value => number_to_currency(:price, :precision => 2)
您需要解释(并可能重新格式化)处理表单的控制器方法中的值。