我已经设置了一个自定义的locale,以便让ActiveSupport在调用 number_to_human
. 而不是 number_to_human(123456) => '123.4 Thousand'
它给我 number_to_human(123456) => '123.4k'
.
这一切都很好。ぐ或 不 的工作是,虽然默认的locale会留下较小的数字(即 number_to_human(56) => 56
),而我的自定义locale却没有。我把单位、十和百的后缀都留了空,但这样做的结果是 number_to_human(52) => '5.2'
(即5.2十)或 number_to_human(123) => '1.23'
(对于1.23百位数).我如何告诉ActiveSupport不使用单位、十位数或百位数--只留下1000以下的数字?
我如何告诉ActiveSupport不要使用单位、十或百,只留下1000以下的数字?
这里是locale文件,如果有帮助的话(config/locales/en-ABBREV.yml
):
en-ABBREV:
datetime:
distance_in_words:
x_seconds: '%{count}s'
x_minutes: '%{count}m'
about_x_hours: '%{count}h'
x_hours: '%{count}h'
x_days: '%{count}d'
x_weeks: '%{count}w'
about_x_months: '%{count}mo'
x_months: '%{count}mo'
x_years: '%{count}y'
number:
human:
unit: ''
ten: ''
hundred: ''
thousand: 'k'
million: 'm'
billion: 'b'
trillion: 't'
quadrillion: 'qd'
而我的电话 number_to_human
在视图中,看起来像这样。
number_to_human @posts.count, precision: 1, significant: false, locale: 'en-ABBREV',
units: 'number.human', format: '%n%u'
看了该方法的文档,我想你可以像下面这样定义你想使用的单位。当一个键(如 tens
)不包括在 units
那么,该单位将只是不使用。
number_to_human(
@posts.count,
format: '%n%u',
precision: 1,
significant: false
units: {
thousand: 'k',
million: 'm',
billion: 'b',
trillion: 't',
quadrillion: 'qd'
}
)