我在表单上有一个输入字段,用户以美元金额输入。我正在使用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。
答案 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"