我有一张编辑表。但是当我存储诸如1. 5之类的东西时,我希望将其显示为1. 50。如何使用表单帮助程序来完成此操作?<%= f.text_field :cost, :class => 'cost' %>
<%= f.text_field :cost, :class => 'cost' %>
a0zr77ik1#
您应该使用number_with_precision助手。参见文档。示例:
number_with_precision
number_with_precision(1.5, :precision => 2) => 1.50
在窗体助手中:
<%= f.text_field :cost, :class => 'cost', :value => (number_with_precision(f.object.cost, :precision => 2) || 0) %>
顺便说一句,如果你真的想显示一些价格,使用number_to_currency,同一页的文档(在一个表单上下文中,我会保持number_with_precision,你不想搞砸了金钱符号)
number_to_currency
uwopmtnx2#
或者,可以使用格式字符串"%.2f" % 1.5。http://ruby-doc.com/docs/ProgrammingRuby/#Kernel.sprintf
"%.2f" % 1.5
q8l4jmvw3#
为此我使用number_to_currency格式。因为我在美国,默认值对我来说很好用。
<% price = 45.9999 %> <price><%= number_to_currency(price)%></price> => <price>$45.99</price>
如果默认设置不适用,您也可以传入选项。有关可用选项的文档,请访问api.rubyonrails.org
uqdfh47h4#
Rails有一个number_to_currency helper方法,它可能更适合您的特定用例。
cx6n0qe35#
这看起来工作得很好,我将其添加到application_helper.rb中
def display_2dp(form, field) val = form.object.send(field) unless val.nil? return '%.2f' % val end end
像这样使用它:
<%= form.number_field :cost, step: 0.01, value: display_2dp(form, :cost) %>
只需将:cost替换为要显示的字段。一些优点:
:cost
nil
0
|| 0
10.0
5条答案
按热度按时间a0zr77ik1#
您应该使用
number_with_precision
助手。参见文档。示例:
在窗体助手中:
顺便说一句,如果你真的想显示一些价格,使用
number_to_currency
,同一页的文档(在一个表单上下文中,我会保持number_with_precision
,你不想搞砸了金钱符号)uwopmtnx2#
或者,可以使用格式字符串
"%.2f" % 1.5
。http://ruby-doc.com/docs/ProgrammingRuby/#Kernel.sprintfq8l4jmvw3#
为此我使用number_to_currency格式。因为我在美国,默认值对我来说很好用。
如果默认设置不适用,您也可以传入选项。有关可用选项的文档,请访问api.rubyonrails.org
uqdfh47h4#
Rails有一个number_to_currency helper方法,它可能更适合您的特定用例。
cx6n0qe35#
这看起来工作得很好,我将其添加到application_helper.rb中
像这样使用它:
只需将
:cost
替换为要显示的字段。一些优点:
nil
替换为0
(类似于|| 0
可能发生的情况)10.0
将显示为“10.00”)