Рельсы 3. Как отобразить два знака после запятой в форме редактирования?


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

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

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

4 65

4 ответа:

вы должны использовать number_with_precision помощником. см. doc.

пример:

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

внутри вас форма helper:

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

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


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

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

<% price = 45.9999 %>
<price><%= number_to_currency(price)%></price>
=> <price>.99</price>

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

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