我有这个编辑表格。
但是,当我存储1.5之类的东西时,我希望将其显示为1.50。
我该如何使用表单助手? <%= f.text_field :cost, :class => 'cost' %>
Answers:
您应该使用number_with_precision
助手。请参阅doc。
例:
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
doc的同一页面(在表单上下文中,我会保留number_with_precision
,您不想弄乱货币符号)
或者,您可以使用格式字符串"%.2f" % 1.5
。http://ruby-doc.org/docs/ProgrammingRuby/html/ref_m_kernel.html#Kernel.sprintf
为此,我使用number_to_currency格式化程序。由于我在美国,默认设置对我来说很好。
<% price = 45.9999 %>
<price><%= number_to_currency(price)%></price>
=> <price>$45.99</price>
如果默认设置不适合您,您还可以传递选项。api.rubyonrails.org上有关可用选项的文档
Rails提供了一个number_to_currency帮助器方法,该方法可能更适合您的特定用例。
number_to_currency
导致格式化的字符串,Rails无法将其强制转换回浮点数。 number_with_precision
可能是更好的选择。
price = "$3.99"; price.slice!("$"); puts price.to_f => 3.99
这仅取决于您想要的用户体验。有些人可能想要将美元符号放入输入框中的功能。我知道我喜欢选择。
|| 0
除非用户删除该值,否则使用将会阻止显示任何HTML5占位符值。同样,擦除该字段可能会导致数字验证出现问题(因为当您想要的是无值属性时,会有一个空值属性)。一点点JS都无法解决,但是在这种情况下,Rails似乎应该更聪明一些。