在储蓄之前消化美元价值

时间:2015-03-06 16:36:03

标签: ruby-on-rails ruby ruby-on-rails-4 currency

我在表单上有一个输入字段,用户以美元金额输入。我正在使用autoNumeric来屏蔽该字段,以便当用户输入1000时,它在文本字段中显示1,000.00。

数据库中的列(requested_amount)是一个小数,精度=> 8和scale => 2.

我根据其他SO答案进行了回调,这些答案试图在验证并保存到数据库之前从输入中删除逗号。

def strip_commas_from_dollar_fields
  self.requested_amount = self.requested_amount.to_s.gsub(',', '')
end

# Callback
before_validation :strip_commas_from_dollar_fields

传递的params哈希然后我提交表单:

 "requested_amount"=>"80,000.00"

但是,当我在控制台中查看该号码时,它会显示:

 => 80.0 

我需要数据库中的数字为80000.00。

1 个答案:

答案 0 :(得分:0)

由于:

def strip_commas_from_dollar_fields
  p self.requested_amount // <- here is 80.0 already

  self.requested_amount = self.requested_amount.to_s.gsub(',', '')
end

检查一下。因此,尝试在requested_amount字段周围创建包装器,而不是这种方式:

def requested_amount_wrapper=(val)
    self.requested_amount = val.to_s.gsub(',', '')
end

def requested_amount_wrapper
    self.requested_amount
end

并在哈希参数中使用此包装字段:

"requested_amount_wrapper"=>"80,000.00"