2011-11-02 51 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

不,我認爲你的建議很好,可能我最終會做的。我只是希望儘可能使流程順利進行。沒有什麼比填寫表格更煩人,然後必須糾正技術上正確的值。例如:當一個網站以特定格式需要我的電話號碼時。如果可能,我想盡量避免。 –