Ruby on rails 如何让will_paginate正确显示条目数?

Ruby on rails 如何让will_paginate正确显示条目数?,ruby-on-rails,ruby,will-paginate,Ruby On Rails,Ruby,Will Paginate,有一个page\u entries\u infoview助手,可以输出文本,如“显示总共4825份合同中的1-35份” 然而,我发现当我尝试这样使用它时 = page_entries_info @contracts 它输出 显示合同1-35份,共4825份 (它输出模型的单数名称,而不是复数名称,全部小写。) 我需要给它喂点别的东西吗 我尝试了page\u entries\u info@contracts,:model=>Contract,但得到了相同的结果 我使用的是3.0.3版——当前版本

有一个
page\u entries\u info
view助手,可以输出文本,如“显示总共4825份合同中的1-35份”

然而,我发现当我尝试这样使用它时

= page_entries_info @contracts
它输出

显示合同1-35份,共4825份

(它输出模型的单数名称,而不是复数名称,全部小写。)

我需要给它喂点别的东西吗

我尝试了
page\u entries\u info@contracts,:model=>Contract
,但得到了相同的结果

我使用的是3.0.3版——当前版本

顺便问一下,有人能给我指一下WillPaginate的API文档吗?

will\u paginate API文档:

简短回答

您可以将model选项指定为字符串,该字符串将被正确地复数化

page_entries_info @contracts, :model => 'contract'
# Displaying contracts 1 - 35 of 4825 in total
更长的答案

用于自定义输出的。这是一种痛苦,因为您必须在
config/locales/*.yml
文件(例如,en.yml)中为所有模型写出单数和复数形式,
%{foo}
-风格的语法似乎不是ERB,而只是占位符,因此您无法执行
%{foo.downcase}
之类的操作

如果您编写自己的助手,您就可以完全控制输出。例如:

def my_page_info(collection)
  model_class = collection.first.class
  if model_class.respond_to? :model_name
    model = model_class.model_name.human.downcase
    models = model.pluralize
    if collection.total_entries == 0
      "No #{models} found."
    elsif collection.total_entries == 1
      "Found one #{model}."
    elsif collection.total_pages == 1
      "Displaying all #{collection.total_entries} #{models}"
    else
      "Displaying #{models} #{collection.offset + 1} " +
      "to #{collection.offset + collection.length} " +
      "of #{number_with_delimiter collection.total_entries} in total"
    end
  end
end

# Displaying contracts 1 - 35 of 4,825 in total

在执行分页之前,可以将计数存储在实例变量中。一些文档: