Dar*_*use 4 ruby ruby-on-rails pluralize
我知道你可以使用复数特征在Rails中复数一个单词.
pluralize (3, 'cat')
=> 3 cats
Run Code Online (Sandbox Code Playgroud)
但我想要做的是复数一个需要复数多个单词的句子.
There are <%= Cat.count %> cats
Run Code Online (Sandbox Code Playgroud)
问题是,如果只有一只猫.它会回来
There are 1 cats
Run Code Online (Sandbox Code Playgroud)
哪个没有意义.
应该说
There are x cats (if x is not 1)
There is 1 cat (if there is only 1)
Run Code Online (Sandbox Code Playgroud)
问题是,我无法弄清楚如何将其复数化,因为我们在这里有两个参数(是和猫).
任何帮助将不胜感激.
也许是这样的?
if Cat.count == 1
puts "There is 1 cat"
else
puts "There are #{Cat.count} cats"
end
Run Code Online (Sandbox Code Playgroud)
DMK*_*MKE 12
您可以通过为翻译键定义计数值来使用库的复数功能I18n(即config/locales/en.yml):
en:
cats:
one: 'There is one cat.'
other: 'There are %{count} cats.'
Run Code Online (Sandbox Code Playgroud)
然后,在您的代码(或视图,或其他任何地方,因为I18n全局可用)
3.times{|i|
puts I18n.t('cats', count: i)
}
Run Code Online (Sandbox Code Playgroud)
将输出
There are 0 cats.
There is one cat.
There are 2 cats.
Run Code Online (Sandbox Code Playgroud)