在Ruby中复数和去除名词的名词

时间:2012-11-06 07:01:50

标签: ruby-on-rails ruby capitalization pluralize

我正在为Ruby on Rails实现特定网页的视图计数功能。我使用haml列表来实现我的目的。 (JavaScript库获取列表并将其呈现为下拉列表。)

以下是代码段:

%li.action
  = link_to t(question.views_count.to_s + ' views')

我的问题是视图中的V在输出中大写,并且即使对于0和1个视图,视图也是多元化的。有什么方法可以解决这些问题吗?

2 个答案:

答案 0 :(得分:1)

请参阅此链接以获得复数 http://apidock.com/rails/ActionView/Helpers/TextHelper/pluralize

尝试使用consolefor example

1.9.3p125 :028 > pluralize(2, 'View')
 => "2 Views"

<强>更新

在您的控制台中尝试使用 capitalize

"view".capitalize 

答案 1 :(得分:1)

你做错了,你应该让I18N系统(即t方法)单独处理复数化。适当的复数处理非常复杂,不要尝试用字符串操作自己做。您正在使用t方法,但它可以为您做更多的事情。

来自I18N Guide

  

:count插值变量具有特殊的作用,因为它都插入到翻译中并用于根据CLDR定义的复数规则从翻译中选择复数:

I18n.backend.store_translations :en, :inbox => {
  :one => '1 message',
  :other => '%{count} messages'
}

I18n.translate :inbox, :count => 2
# => '2 messages'

假设您正确设置了消息数据库,那么您可以执行以下操作:

t(:views, :count => question.views_count)

你的英文翻译文件会是这样的:

views:
  one: "1 view"
  other: "%{count} views"