2011-11-02 54 views
1

我知道这是一个非常基本的问题,但我很难找到在rails应用程序中执行此操作的标准/最佳方式。这看起来像是一个非常典型的问题,我确信有一个很好的方法来解决这个问题。将用户提供的字符串转换为数字

这是问题所在。我有一个客户端模型与“estimated_worth”十进制列:

client = Client.new 
client.estimated_worth = "2,000" 
client.estimated_worth 
=> 2 

显然,这是不好的。我也看到了这有时会:

client = Client.new 
client.estimated_worth = "2 thousand" 
client.estimated_worth 
=> 2 

有一个很好的方式在轨道来处理这个,我很想念?基本上,我正在寻找类似Time.parse()的东西,但是对于数字。

在此先感谢。

回答

0

我不知道这方面的任何明确的Rails的方法,而我个人倒验证使用JavaScript客户方表单上的输入 - 一个简单的正则表达式会做:

^\d+$ 

,或者你可以使用像http://docs.jquery.com/Plugins/Validation,如果你愿意的话 - 然后在模型中做一些验证来确认。

+0

是的,我可以做到这一点,看起来很不友善。我必须想象有一个优雅的解决方案来处理用户提供的号码。这似乎更加红宝石。 –

+0

哦,是的,可能有更多的rubyesque做法,但鉴于您正在验证用户输入,在我脑海中完成它的逻辑位置将在表单本身。例如,如果用户输入2.000,则希望将其视为两千。你会如何处理整数与浮点数?如果有人输入2000.50会怎么样?你可以避开所有这些,只是在它打到你的应用程序之前过滤出非数字文本..我不确定你的意思是用户不友好的,但是? – FiveOhOne

+0

不,我认为你的建议很好,可能我最终会做的。我只是希望尽可能使流程顺利进行。没有什么比填写表格更烦人,然后必须纠正技术上正确的值。例如:当一个网站以特定格式需要我的电话号码时。如果可能,我想尽量避免。 –