2014-03-31 42 views
0

我在我的網站上有一些表單,用戶輸入貨幣值後,這些輸入被放入計算器。Rails:Currency to Number

輸入需要是浮點數或整數,但我需要它,所以如果他們輸入'$ 200,000'或'200000',它將在點擊提交後導致'200000.0'。 (排序number_to_currency相反的)

我想這樣

text = text.gsub(/[$,]/, '').to_f 

或更好,但採取了所有非數字字符,但是這將導致在輸出中無意爲零。

我也想結果格式化視圖,以便如果得到的浮動有小數如200.00後沒有那麼它將四捨五入到200.否則,它會舍入到2位小數

最優選我希望它在表單實際提交之前像存在驗證程序一樣工作。

什麼是最好的方式去實現呢?我在想,我錯過了一些顯而易見的東西。

+0

你是什麼意思「輸出中的無意義的零」? –

+0

混淆自己,但我基本上意味着避免如果用戶輸入類似$ 200,000的東西,它不會被轉換爲零,然後繼續正常進行的情況。 – pjsim

回答

1

對於第二部分,你可以這樣做:

# after converting text to a float 
text.modulo(1) == 0 ? text.to_i : sprintf("%.2f", text) 

例如,如果,我們使用上述獲得200000

另一方面,如果text = 200000.1,我們得到200000.10使用上述。