it-roy-ru.com

Rails 3. Как отобразить два десятичных знака в форме редактирования?

У меня есть эта форма редактирования.

Но когда я сохраняю что-то вроде 1.5, я бы хотел отобразить его как 1.50.

Как я могу сделать это с помощником формы? <%= f.text_field :cost, :class => 'cost' %>

66
leonel

Вы должны использовать number_with_precision помощник. см. Документ .

Пример:

number_with_precision(1.5, :precision => 2)
=> 1.50 

В вашей форме помощник:

<%= f.text_field :cost, :class => 'cost', :value => (number_with_precision(f.object.cost, :precision => 2) || 0) %>

Кстати, если вы действительно хотите отобразить какую-то цену, используйте number_to_currency, ту же страницу для документа (В контексте формы я бы оставил number_with_precision, вы не хотите портить денежные знаки)


157
apneadiving

Кроме того, вы можете использовать строку формата "%.2f" % 1.5. http://Ruby-doc.org/docs/ProgrammingRuby/html/ref_m_kernel.html#Kernel.sprintf

44
gkuan

Для этого я использую number_to_currency . Так как я нахожусь в США, настройки по умолчанию работают хорошо для меня.

<% price = 45.9999 %>
<price><%= number_to_currency(price)%></price>
=> <price>$45.99</price>

Вы также можете передать параметры, если значения по умолчанию не работают для вас. Документация по доступным опциям на api.rubyonrails.org

10
codesponge

В Rails есть вспомогательный метод number_to_currency , который лучше подходит для конкретного случая использования.

7
Brian