Как изменить обозначение единицы вывода при использовании ActionView :: Helper number_to_human_size

Я использовал отличный number_to_human_size ActionView::Helper, и мне было интересно, есть ли способ изменить обозначение единицы вывода:

По умолчанию единицы измерения выводятся в байтах, КБ, МБ и т. Д., В то время как я хотел бы видеть бит, кб, МБ и т. Д.

Преобразование числа правильное, я хочу изменить только название единицы. Я понял, что использование локалей может быть решением, и добавил это в свой en.yml:

en:
  storage_units:
    format: "%n %u"
    units:
      byte:
        one: "b/s"
        other: "b/s"
      kb: "Kb/s"
      mb: "Mb/s"
      gb: "Gb/s"
      tb: "Tb/s"

... но, похоже, не работает.

Кто-нибудь когда-нибудь справлялся с этой проблемой?

Заранее спасибо,

Петрос


person Cacofonix    schedule 13.02.2014    source источник


Ответы (1)


С помощью number_to_human_size Rails вы можете просто сделать gsub для замены значений в суффиксе.

number_to_human_size(1234567890).gsub(/(Bytes?|B$)/,'b/s')
# => "1.15 Gb/s"
person jstim    schedule 13.02.2014
comment
Да, конечно, но меня интересует human_to_number_size, который имеет дело с размерами файлов (1024 вместо 1000). Очевидно, вышесказанное не относится к этому конкретному помощнику: irb(main):003:0> number_to_human(123456789000, units: {unit: "b/s", thousand: "Kb/s", million: "Mb/s", billion: "Gb/s", trillion: "Tb/s"}) = ›123 Гбит / с irb(main):004:0> number_to_human_size(123456789000, units: {unit: "b/s", thousand: "Kb/s", million: "Mb/s", billion: "Gb/s", trillion: "Tb/s"}) =› 115 ГБ - person Cacofonix; 13.02.2014
comment
да, я посмотрел на number_to_human_size, но он не позволяет вам указывать собственные суффиксы. Теперь, когда я думаю об этом, как насчет gsub? - person jstim; 13.02.2014
comment
Очень хорошо выполнено! Каковы функциональные возможности:? и?, которые упаковывают Bytes? - person Cacofonix; 15.02.2014
comment
Посетите rubular.com. Эти символы являются частью регулярного выражения. Секунда ? говорит, что соответствует нулю или единице s, поэтому соответствует Byte или Bytes. :? - это ошибка. Я имел в виду, что это не захватывающая группа ?:, но для gsub это не имеет значения. Удаление его. - person jstim; 15.02.2014