我有 2 个数据库列(使用 mysql),一个是十进制(10,2)另一个是字符串。
迁移的样子。
t.decimal :PRICE, precision: 10, scale: 2
t.string :TOTALTAX
在 _form.html.erb 部分中,我使用 number_to_currency 助手进行了以下操作。
<div class="form-group">
<%= f.label :PRICE %>
<br>
<%= f.text_field :PRICE, :value => number_to_currency(f.object.PRICE, :precision => 2), :class=>'form-control' %>
</div>
<div class="form-group">
<%= f.label :TOTALTAX %>
<br>
<%= f.text_field :TOTALTAX, :value => number_to_currency(f.object.TOTALTAX, :precision => 2), :class=>'form-control' %>
</div>
一开始我在 TOTALTAX 字符串中有“3429.65”,在十进制中有“189900.00”。
当我在编辑视图中使用部分时。一切都按照您的预期和我的数字呈现。在他们的领域里,看起来都很漂亮,这就是我想要的。易于阅读。
但是,当我将表单提交到编辑(更新)时,我的字符串以“$3,429.65”的形式保存到数据库中,这没问题,但我的小数点保存为“0.00”。我的数据怎么了?
其次,如果我返回并重新进入编辑视图,我的小数点(PRICE)显然显示为“$0.00”,但现在我的字符串(TOTALTAX)显示为“$$3,429.65”。每次我重新进入视图并更新时,它都会在前面加上 $ 符号。
想法???
我尝试在模型中使用 before_save 挂钩但没有成功,该代码看起来像。
before_save :strip_currency
def strip_currency
self.PRICE = self.PRICE.to_s.gsub(/[$,]/,"").to_d
self.TOTALTAX = self.TOTALTAX.to_s.gsub(/[$,]/,"")
end