0

我的 Sinatra 应用程序中有一个价格字段。DataMapper 的定义是:

property :purchase_price, Decimal, :precision => 10, :scale => 2

收集价格的输入表单如下所示:

<input type="text" name="price" placeholder="Price" pattern="^\d+\.\d{2}$">

我想查看价格并可能更改价格的编辑表单如下所示:

<input type="text" name="price" value="<%= @book.purchase_price.to_s('F') %>">

当我在表格中显示所有书籍及其价格时,价格通过以下方式显示:

<td><%= book.purchase_price.to_s('F') %></td>

该行在循环中的位置:

<% @books.each do |book| %> ... <% end %>

当美分等于 0 时,价格显示会截断值的美分部分,即,我得到9.0的不是9.00. 输入模式确保我必须输入9.00,但我不知道如何显示9.00

我确定我遗漏了一些明显的东西。如何在不截断的情况下显示价格?

4

2 回答 2

1
"%.2f" % @book.purchase_price

将用两位小数格式化您的变量。等效地,

sprintf("%.2f", @book.purchase_price)

文档:String#%Kernel#sprintf

于 2013-02-22T05:06:50.470 回答
0

你可以试试 Money gem https://github.com/RubyMoney/money

于 2013-02-22T05:19:01.930 回答