Adrian Elder Adrian Elder - 2 months ago 36
Ruby Question

Rails number_field alternative for decimal values

I'm trying to accept a decimal value (USD, so 12.24 would be an example) with the number_field method.

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


This only allows me to enter integer values.

Answer

You can bypass the "only Integers" constraint by adding a Float for the step option:

f.number_field :amount, :class => 'text_field', :step => 0.5

Update: Actually you can use the value 'any' for the step, it will accept all floats and integers, and the step will be 1:

f.number_field :amount, class: :text_field, step: :any

Update for prices:

You can use the rails' helper number_to_currency to display a price inside a number_field:

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