Rails number_field替代十进制值


78

我正在尝试使用number_field方法接受一个十进制值(USD,所以12.24将是一个示例)。

<div class="controls">
  <%= f.number_field :amount, :class => 'text_field' %>
</div>

这只允许我输入整数值。

Answers:


143

您可以通过为步骤选项添加Float来绕过“ only Integers”约束:

f.number_field :amount, step: 0.5

更新: 实际上,您可以在步骤中使用值“ any”,它将接受所有浮点数和整数,并且步骤将为1:

f.number_field :amount, step: :any

价格更新:

您可以使用rails的助手number_to_currency在number_field中显示价格:

f.number_field :amount, value: number_to_currency(f.object.amount.to_f, delimiter: '', unit: ''), step: :any

41
:step => 0.01如果您想要带两位小数的数字
Miotsu

1
此舍入是仅用于显示还是用于内部表示?
罗里

1
@Lori显示的值与使用html表单提交的值相同。如果输入0.33number_field_tag :amount,您将收到params[:amount]相当于 0.33
MrYoshiji

4

对于价格字段,您可以使用以下命令:

f.number_field :price, value: @item.price ? '%.2f' % @item.price : nil, min: 0, step: 0.01

即使您允许空白值,它也可以正常工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.