【发布时间】:2018-09-04 21:14:54
【问题描述】:
我有一个form_for,它有一个text_field,它接受用户以如下格式输入的数字:$45,000.45。
但是,数据库将其保存为 BigDecimal 值。
在保存之前将其转换为大小数并将其显示在视图上的最有效方法是什么?
【问题讨论】:
标签: ruby-on-rails ruby integer bigdecimal
我有一个form_for,它有一个text_field,它接受用户以如下格式输入的数字:$45,000.45。
但是,数据库将其保存为 BigDecimal 值。
在保存之前将其转换为大小数并将其显示在视图上的最有效方法是什么?
【问题讨论】:
标签: ruby-on-rails ruby integer bigdecimal
money gem(和money-rails)是处理此类金额的一种非常有效的方法。
【讨论】:
我过去的处理方式是使用 Rails 辅助方法 number_to_currency。
number_to_currency(1234567890.50) # => $1,234,567,890.50
number_to_currency(1234567890.506) # => $1,234,567,890.51
number_to_currency(1234567890.506, :precision => 3) # => $1,234,567,890.506
您可以将该字段保存为普通数字,Rails 会将其格式化为 $'s。
【讨论】:
$<%= f.number_field :dollar_amount %>。它使用 BigDecimal 字段保持数字的类型正确性。