Rails number_field替代十进制值

Adr*_*der 70 ruby-on-rails

我正在尝试使用number_field方法接受小数值(USD,因此12.24就是一个例子).

<div class="controls">
  <%= f.number_field :amount, :class => 'text_field' %>
</div>
Run Code Online (Sandbox Code Playgroud)

这只允许我输入整数值.

MrY*_*iji 129

您可以通过为步骤选项添加Float来绕过"仅整数"约束:

f.number_field :amount, step: 0.5
Run Code Online (Sandbox Code Playgroud)

更新: 实际上你可以为步骤使用值'any',它将接受所有浮点数和整数,步骤将为1:

f.number_field :amount, step: :any
Run Code Online (Sandbox Code Playgroud)

价格更新:

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

f.number_field :amount, value: number_to_currency(f.object.amount.to_f, delimiter: '', unit: ''), step: :any
Run Code Online (Sandbox Code Playgroud)

  • `:step => 0.01`如果你想要2位小数的数字 (38认同)

col*_*rco 10

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

f.number_field :price, value: @item.price ? '%.2f' % @item.price : nil, min: 0, step: 0.01
Run Code Online (Sandbox Code Playgroud)

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