我有一个大问题,我有一个输入,我把我的金额格式化成这样.

15550.55,问题是,一旦我提交了这个值,它就会将其存储为15.50,因为BigDecimal对象,它不会取整数.

在我的参数中,我收到的值为"dr_business_remuneration"=>"15,550.55"

对于该属性,我的postgresql数据库中的数据类型是数字(19,2)

我唯一想要的是,一旦提交,值将存储为15550.55,但在我的视图中显示为15550.55.

我在我的模型中try 了一个带有before_save回调的方法,该方法在保存该值之前擦除我的"".

before_save: montos_formateados

  def montos_formateados
    if !self.dr_business_remuneration.blank?
       self.dr_business_remuneration.sub(",", "").to_f
    end
  end

但返回此错误.

no implicit conversion of String into Integer

推荐答案

有几种方法可以做到这一点.首先,如果您希望其编码正确地显示在终端中,这应该可以工作:

'15550.55'.reverse.scan(/.{1,3}/).join(',').reverse

如果您将其显示在网页上,这是最好的:

<%= number_with_delimiter(@number, :delimiter => ',') %>

如果您对一些其他依赖项满意,这可能是最好的方法:

require 'active_support'
require 'active_support/core_ext/numeric/conversions'

number = 15550.55
number.to_s(:delimited)      # => "12,345"
number.to_s(:delimited) # => "12,345.6789"

我希望这有帮助!

Ruby-on-rails相关问答推荐

DateTime的最小数据提交格式

合成轨道布局

Grape api (rails) - 未初始化常量 Endpoints::TodoAPI (NameError)

根据表单内的 Select 字段值渲染部分内容

您如何测试方法调用块内调用的方法,以及使用 rspec 在块内传递给该方法调用的内容

错误原始错误:未安装 ImageMagick/GraphicsMagick

Factory Girl + Mongoid 在fixture 中嵌入文档

查找日期时间与今天匹配的记录 - Ruby on Rails

Ruby - ActiveRecord::ConnectionNotEstablished

使用 SQLite 3 将 RoR 应用程序部署到 Heroku 失败

单击表格行(使用 bootstrap 程序)时,如何使用模式显示数据?

在两个 DateTime 之间迭代,步长为一小时

什么是Ruby 用于 BESIDES 轨道?

为什么 respond_with 被从 rails 4.2 移除到它自己的 gem 中?

错误未初始化的常量 AWS (NameError)

Ruby on Rails i18n - 想要在模型中翻译自定义消息

如何更改 Rails 3 控制器中视图文件的默认路径?

为什么 Rails 需要 JavaScript 运行时?

错误:删除表违反外键约束.密钥 id 仍然从表中引用(很多)

无法加载此类文件 -- openssl (LoadError)