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


79

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

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

Це дозволяє мені лише вводити цілі значення.

Відповіді:


146

Ви можете обійти обмеження "лише цілі числа", додавши Float для параметра кроку:

f.number_field :amount, step: 0.5

Оновлення: Насправді ви можете використовувати для кроку значення "будь-яке", воно прийме всі плаваючі та цілі числа, і крок буде 1:

f.number_field :amount, step: :any

Оновлення цін:

Ви можете використовувати помічник рейок, number_to_currencyщоб відобразити ціну всередині поля number_:

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

43
:step => 0.01якщо ви хочете цифри з 2 десятковими цифрами
Міоцу

1
Це округлення лише для показу або також для внутрішнього представлення?
Лорі

1
@Lori Значення, що відображається, є таким самим, як і значення, подане у формі html. Якщо ви введете 0.33в number_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

Це чудово працює, навіть якщо ви дозволяєте пусті значення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.