【问题标题】:Rails: Converting currency from form to big decimalRails:将货币从形式转换为大十进制
【发布时间】:2018-09-04 21:14:54
【问题描述】:

我有一个form_for,它有一个text_field,它接受用户以如下格式输入的数字:$45,000.45

但是,数据库将其保存为 BigDecimal 值。

在保存之前将其转换为大小数并将其显示在视图上的最有效方法是什么?

【问题讨论】:

    标签: ruby-on-rails ruby integer bigdecimal


    【解决方案1】:

    money gem(和money-rails)是处理此类金额的一种非常有效的方法。

    【讨论】:

      【解决方案2】:

      我过去的处理方式是使用 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。

      【讨论】:

      • 我实际上需要做相反的事情,允许用户输入货币(1,345.56 美元),然后将其保存为 BigDecimal。
      • @Stefan 很荣幸收到您的评论! @zasman 我要做的是创建一个以美元符号为前缀的数字输入:$<%= f.number_field :dollar_amount %>。它使用 BigDecimal 字段保持数字的类型正确性。
      猜你喜欢
      • 1970-01-01
      • 2011-09-25
      • 2012-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多