2013-02-22 54 views
0

我在我的Sinatra应用程序中有一个价格字段。该DataMapper的定义是:在Sinatra应用程序中格式小数显示器

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 %>

价格显示截断美分等于零时的价值部分,即我得到9.0而不是9.00。输入模式确保我必须输入9.00,但我无法弄清楚如何显示9.00

我敢肯定我错过了一些明显的东西。如何在不截断的情况下显示价格?

回答

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

将使用两位小数格式化您的变量。同样地,

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

文档:String#%Kernel#sprintf

+0

完美地工作。谢谢! – 2013-02-22 14:04:00