0

我正在使用 Rails 3.2.5,当它返回一个值 o :price 进行编辑时,它只带一位小数,例如。600.0,我需要在数据库中带 2 个小数(例如 600.00)记录为 600.00,在我的语言环境中我已经设置为 2 个小数,但仍然不起作用。

我试过了

number_to_currency(:price, :precision => 2) 

但它适用于像“show”这样的视图,我需要它在文本字段上返回用于编辑的propper值。

在我的迁移中,“价格”字段设置为十进制(15,2)。

有人可以帮忙吗?

谢谢你!

4

4 回答 4

3

文本字段对字段的“本机”值进行操作,因为它由 ActiveRecord 处理,而不是存储在数据库中。

货币字段很棘手,因为 ActiveRecord 在数据库表示和 ruby​​/rails 表示之间进行转换,即 BigDecimal。

如果您的目标是要向用户展示$1,000.00并允许他们编辑它,一些想法:

  1. 使用 Ylan S 所指的 Money gem。
  2. 使用就地编辑小部件,例如截屏。您将number_to_currency用于显示该值。单击时,输入字段将显示不带货币符号的值、千位分隔符的逗号等。请注意,这是 Excel 的工作方式:当您编辑货币字段的值时,您不会输入 1,000。你输入 1000。
于 2012-08-16T21:19:36.680 回答
1

使用“离域”gem 解决了问题。旧但黄金!:) 谢谢你们!

于 2012-09-18T20:46:33.127 回答
1

根据我的经验,最好将金额以美分存储为整数,而不是使用十进制存储货币。这将解决多个问题,包括您现在遇到的问题。

过去,我使用Money gem及其伴侣money-rails取得了很大的成功。

于 2012-08-16T21:06:22.447 回答
0

The simplest way to have your text_field display a formatted value is to pass it explicitly, like this:

f.text_field :price, :value => number_to_currency(:price, :precision => 2) 

You'll need to interpret (and possibly re-format) the value in the controller method that handles the form.

See How can I format the value shown in a Rails edit field?

于 2012-08-16T21:27:09.080 回答