4

Я использую number_to_human для печати 4 миллиона. Мне было интересно, есть ли метод, который добавит $ к фронту номера? Я сталкиваюсь с проблемами, когда у меня есть отрицательное число. Если я просто брошу $ на фронт, я получу $ 4 миллиона, они хотят - 4 миллиона долларовnumber_to_human с валютой

+0

не забудьте принять один ответ, это часть игры здесь – apneadiving

ответ

9

Это BUILTIN Rails:

number_to_currency(number_to_human(-4000000)) 
# => "-$4 Million" 

Большое преимущество в использовании конвенции является то, что, когда вам нужно i18n, вы просто должны пройти языковой стандарт:

number_to_currency(number_to_human(-4000000), locale: 'en-EU') 
# => "-4 Million €" 
+0

Спасибо, я думаю, что у меня было обратное. – LuP

+0

удивительный. это здорово – HungryCoder

1

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

amount = -4000000 
if amount < 0 
    human = "-$#{number_to_human(amount.abs)}" 
else 
    human = "$#{number_to_human(amount)}" 
end 

@apneadiving показывает реальные простые способы.

1

Его интересная вещь, и если он никому не помогло бы:

How to Present thousands as "K", millions as "M" in ruby for that, 
just follow the steps 

Включить NumberHelper в контроллере наверх

include ActionView::Helpers::NumberHelper 

Используйте этот number_to_human Helper и передать значение, Это преобразует значение

<%= number_to_human(5223654) %> 

Вставьте этот код в en.yml, чтобы получить его работу

en: 
    number: 
    human: 
     decimal_units: 
     format: "%n%u" 
     units: 
     unit: "" 
     thousand: K 
     million: M 
     billion: B 
     trillion: T 
     quadrillion: Q 
Смежные вопросы