Rails number_field альтернатива для десятичных значений

Я пытаюсь принять десятичное значение (USD, так что 12.24 будет примером) с методом number_field.

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

Это позволяет мне вводить целочисленные значения.

Ответ 1

Вы можете обойти ограничение "только целые числа", добавив Float для параметра step:

f.number_field :amount, step: 0.5

Обновление: на самом деле вы можете использовать значение "любой" для шага, он будет принимать все числа с плавающей запятой и целые числа, и шаг будет 1:

f.number_field :amount, step: :any

Обновление цен:

Вы можете использовать помощник рельсов number_to_currency для отображения цены внутри number_to_currency:

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

Ответ 2

Для ценовых полей вы можете использовать это:

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

Он отлично работает, даже если вы разрешите пустые значения.