【发布时间】:2014-04-29 07:41:17
【问题描述】:
我有一个模型产品,该模型具有十进制类型的属性价格 (:precision => 20, :scale => 2)
在表单中,我使用的价格字段格式如下:3.000,00,提交表单时,价格更改为 3.00。我希望价格是3,000.00,而不是3.00
使用 Rails 控制台测试
irb(main):001:0> p = Product.create(:price => "3.000,00") ←[1m←[36m
(0.0ms)←[0m ←[1mBEGIN←[0m ←[1m←[35mSQL (72.0ms)←[0m INSERT INTO
"products" ("created_at", "price" "updated_at") VALUES ($1, $2, $3)
RETURNING "id" [["created_at", Tue, 29 Apr 2 014 14:07:25 WIB
+07:00], ["price", #<BigDecimal:4c218f0,'0.3E1',9(18)>], ["updated_at", Tue, 29 Apr 2014 14:07:25 WIB +07:00]] ←[1m←[36m
(11.0ms)←[0m ←[1mCOMMIT←[0m
=> #<Product id: 8, price: #<BigDecimal:4bd5588,'0.3E1',9(18)>, created_at: "20 14-04-29 07:07:25", updated_at: "2014-04-29 07:07:25">
irb (main):002:0> p.price.to_s
=> "3.0"
我尝试使用gsub 将逗号更改为指向before_save 并存储到数据库,但价格总是更改为数据库上的3.00。
before_save :comma_to_delimiter
def comma_to_delimiter
self.price = self.price.gsub(/[.,]/, '.' => ',', ',' => '.')
end
我想要这样:
当我将3.000,00 输入到字段价格时,在数据库3,000.00 和查看价格3.000,00
我不知道该怎么做。 谢谢
注意:我使用 jquery-maskMoney 格式的字段价格:
$("#demo4").maskMoney();
<input type="text" id="demo4" data-thousands="." data-decimal="," data-prefix="R$ " />
【问题讨论】:
-
值得阅读 Rails 国际化指南guides.rubyonrails.org/i18n.html 尤其是本地化功能
标签: ruby-on-rails ruby ruby-on-rails-3.2 gsub