Ruby on rails Rails-如何将句子复数化?
我知道您可以使用复数化功能在Rails中将一个单词复数化Ruby on rails Rails-如何将句子复数化?,ruby-on-rails,ruby,pluralize,Ruby On Rails,Ruby,Pluralize,我知道您可以使用复数化功能在Rails中将一个单词复数化 pluralize (3, 'cat') => 3 cats 但我想做的是使一个句子复数化,这个句子需要将多个单词复数化 There are <%= Cat.count %> cats 这在图像上是没有意义的 应该说 There are x cats (if x is not 1) There is 1 cat (if there is only 1) 问题是,我不知道如何将其多元化,因为这里有两个参数(is和c
pluralize (3, 'cat')
=> 3 cats
但我想做的是使一个句子复数化,这个句子需要将多个单词复数化
There are <%= Cat.count %> cats
这在图像上是没有意义的
应该说
There are x cats (if x is not 1)
There is 1 cat (if there is only 1)
问题是,我不知道如何将其多元化,因为这里有两个参数(is和cat)
任何帮助都将不胜感激
也许是这样的
if Cat.count == 1
puts "There is 1 cat"
else
puts "There are #{Cat.count} cats"
end
您可以通过定义转换键的计数值(即config/locales/en.yml
)来使用I18n
库的:
en:
猫:
一只:“有一只猫。”
其他:“有%{count}只猫。”
然后,在您的代码中(或视图中,或其他任何地方,因为I18n
是全球可用的)
将输出
共有0只猫。
有一只猫。
有两只猫。
一个简单的if else
语句就可以了。如果需要通用的语句,请编写一个方法来解析您的句子并做正确的事情,或者根据计数来构建句子。所讨论的值是Cat.count
还是Cat.count
?哪个?我认为这个问题在这里解决得更好:stackoverflow.com/questions/1686226 1的输出应该是“有一只猫”,对吗?你是对的,很好!
if Cat.count == 1
puts "There is 1 cat"
else
puts "There are #{Cat.count} cats"
end
3.times{|i|
puts I18n.t('cats', count: i)
}