0

在我的 Ruby on Rails 应用程序中,我有一个名为Post的模型,它的数据库表中有一个名为“ Price ”的列;此列是十进制类型,精度为 8,小数位数为 2。

帖子的表单有一个 'text_field' 用于 :price,在帖子显示视图中,我设置了“价格”以这种方式显示 ->

<p>
  <strong>Price:</strong>
  <%= number_to_currency(@post.price) %>
</p>

-我的问题:只有当用户输入值时,价格才会正确显示只有当用户输入没有任何逗号如果用户输入他们想要的包含逗号的数值,则价格最终会呈现为好像他们打算输入小数一样;因此使显示的值太低

(示例:如果用户将67,000作为价格的值字段的值,它将被保存/显示为67.00)。

如何解决此问题,以便即使用户在其最初键入的Price值中包含逗号,它也会正确显示......?相反,如果用户不包含逗号,那么一种方法可以使Show视图的结果输出正确地设置为数千/百万个位置的逗号...?

4

2 回答 2

0

如果用户输入中的逗号导致问题,请将其删除。

<p>
  <strong>Price:</strong>
  <%= number_to_currency(@post.price.remove(",")) %>
</p>
# http://api.rubyonrails.org/classes/String.html#method-i-remove

对于显示,格式由 的locale参数控制number_to_currency()http://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper.html#method-i-number_to_currency

如果您的应用程序将被实际使用逗号作为小数分隔符的用户使用,那么您也需要处理这种情况。

于 2015-04-30T21:35:01.490 回答
0

非常感谢用户“Ruby Racer”和“Mark H”引导我找到正确的解决方案!

这是新Post表单的更正版本:

<%= f.label :price %>
<%= f.number_field :price, step: 'any', class: "form-control" %>

这允许价格以两位小数正确显示,并且根本不会接受用户的逗号作为初始输入。

于 2015-05-01T03:09:21.970 回答