Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails-如何将句子复数化?_Ruby On Rails_Ruby_Pluralize - Fatal编程技术网

Ruby on 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

我知道您可以使用复数化功能在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和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)
}