保存前清理美元价值
Sanitize dollar value before saving
我在表单上有一个输入字段,让用户输入美元金额。我正在使用 autoNumeric 来屏蔽该字段,以便当用户输入 1000 时,它会在文本字段中显示 1,000.00。
数据库中的列 (requested_amount) 是精度 => 8 和小数位数 => 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 hash然后我提交表单:
"requested_amount"=>"80,000.00"
但是,当我在控制台中查看号码时,它显示:
=> 80.0
我需要数据库中的数字为 80000.00。
因为:
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"
我在表单上有一个输入字段,让用户输入美元金额。我正在使用 autoNumeric 来屏蔽该字段,以便当用户输入 1000 时,它会在文本字段中显示 1,000.00。
数据库中的列 (requested_amount) 是精度 => 8 和小数位数 => 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 hash然后我提交表单:
"requested_amount"=>"80,000.00"
但是,当我在控制台中查看号码时,它显示:
=> 80.0
我需要数据库中的数字为 80000.00。
因为:
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"