Rails - 如何复句?

时间:2014-07-31 16:51:46

标签: ruby-on-rails ruby pluralize

我知道你可以使用复数特征在Rails中复数一个单词。

pluralize (3, 'cat')
=> 3 cats

但我想要做的是复数一个需要复数多个单词的句子。

There are <%= Cat.count %> cats

问题是,如果只有一只猫。它会返回

There are 1 cats

哪种格式不合理。

应该说

There are x cats (if x is not 1)

There is 1 cat (if there is only 1)

问题是,我无法弄清楚如何将其复数化,因为我们在这里有两个参数(是和猫)。

任何帮助将不胜感激。

也许是这样的?

if Cat.count == 1
  puts "There is 1 cat"
else
  puts "There are #{Cat.count} cats"
end

1 个答案:

答案 0 :(得分:12)

您可以通过为翻译键定义计数值(即I18n)来使用config/locales/en.yml库的pluralization features

en:
  cats:
    one: 'There is one cat.'
    other: 'There are %{count} cats.'

然后,在您的代码(或视图或其他任何地方,因为I18n全局可用)

3.times{|i|
  puts I18n.t('cats', count: i)
}

将输出

There are 0 cats.
There is one cat.
There are 2 cats.