我的网站上有一些表单,在用户输入货币值后,这些输入被放入计算器中。
输入需要是浮点数或整数,但我想要它,如果输入'$ 200,000'或'200000',点击提交后它们都会产生'200000.0'。 (与number_to_currency相反)
我在想像
这样的东西text = text.gsub(/[$,]/, '').to_f
或者更好的是取出所有非数字字符但这会导致输出中出现无意的零。
我也想在视图中格式化结果,这样如果结果浮点数在小数后面没有任何内容,例如200.00那么它将向上舍入到200.否则它将舍入到小数点后2位
最好我希望它在表单实际提交之前像存在验证器一样工作。
实施此方法的最佳方法是什么?我在想有一些我错过的东西。
答案 0 :(得分:1)
对于第二部分,你可以这样做:
# after converting text to a float
text.modulo(1) == 0 ? text.to_i : sprintf("%.2f", text)
例如,如果text = 200000.0
,我们会使用上述内容获得200000
。
另一方面,如果text = 200000.1
,我们会使用以上内容获得200000.10
。