WillPaginate有一个page_entries_info
视图助手输出文字,例如“总共显示合同1 - 35 of 4825”。
然而,我发现当我尝试使用它时......
= page_entries_info @contracts
输出......
显示合同1 - 总共4825个中的35个
(它输出模型的单数名称,而不是复数,全部小写。)
我需要提供其他一些参数吗?
我尝试了page_entries_info @contracts, :model => Contract
,但结果相同。
我正在使用3.0.3版 - 当前版本。
顺便说一下,有人可以指向WillPaginate的API文档吗?
答案 0 :(得分:3)
will_paginate API文档:https://github.com/mislav/will_paginate/wiki/API-documentation
简短回答
您可以将模型选项指定为字符串,该字符串将正确复数。
page_entries_info @contracts, :model => 'contract'
# Displaying contracts 1 - 35 of 4825 in total
更长的答案
您使用will_paginate docs suggest the i18n mechanism来自定义输出。这是一种痛苦,因为AFAICT你必须为config/locales/*.yml
文件(例如en.yml)中的所有模型写出单数和复数形式,并且%{foo}
- 样式语法不会&# 39;似乎是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