2012-08-16 138 views
0

我正在使用Rails 3.2.5,並且它返回一個值o:用於編輯它的價格只帶了一個小數,例如。 600.0,我需要我帶2個小數(例如600.00)在數據庫中記錄600.00,在我的地區我已經設置爲2小數,並且仍然不工作。Rails不會正確地返回小數

我試圖

number_to_currency(:price, :precision => 2) 

,但它運作良好,對於喜歡「秀」看,我需要它返回propper值進行編輯,在文本框。

在我的遷移字段「價格」設置做十進制(15,2)。

有人可以幫忙嗎?

謝謝!

+0

歡迎來到計算器!請記住提出所有有用的答案,包括對其他人提出的問題。並檢查/選擇你自己的問題的最佳答案。 – 2012-08-16 21:21:03

回答

1

問題解決。 舊但金! :) 謝謝你們!

1

根據我的經驗,不要使用小數來存儲貨幣,最好以美分爲單位存儲數量,作爲整數。這將處理多個問題,包括您現在擁有的問題。

我在過去使用Money gem及其伴侶money-rails已經取得了很大的成功。

3

文本字段在字段的「native」值上運行,因爲它由ActiveRecord處理,而不是存儲在數據庫中。

自從ActiveRecord在數據庫表示和ruby/rails表示之間進行轉換(BigDecimal)以來,貨幣字段非常棘手。

如果你的目標是要展示你的用戶$1,000.00,並讓他們對其進行編輯,一些想法:

  1. 用錢寶石Ylan小號指。
  2. 使用編輯地方小部件例如screencast。您將使用number_to_currency來顯示值。單擊時,輸入字段將顯示沒有貨幣符號的值,千位分隔符的逗號等。請注意,這是Excel的工作方式:編輯貨幣字段的值時,不輸入1,000。你輸入1000
0

最簡單的方法讓您的text_field顯示格式的價值是顯式傳遞,就像這樣:

f.text_field :price, :value => number_to_currency(:price, :precision => 2) 

你需要解釋(也可能是重新格式化)處理表單的控制器方法中的值。

請參閱使用 '離域' 寶石How can I format the value shown in a Rails edit field?