Rails:渲染集合部分:获取部分内部集合的大小

我有一个我想用部分渲染的项目集合:

@items = ['a','b','c']  @items, :partial => 'item' %> 

我想用升序数字对元素进行编号 。 所以输出应该是:

 3: a 2: b 1: c 

我知道rails在partial中提供了一个计数器,所以如果我想对降序的项目进行编号,我可以创建以下部分:

 :  

这给了我

 1: a 2: b 3: c 

但是对于递增的数字,我需要项目的总数,我可以提供一个局部的部分:

  @items, :partial => 'item', :locals => {:total => @items.size} %> 

然后在部分:

 :  

但是我感觉像重复一样,因为渲染方法已经知道了集合的大小。

除了使用局部变量之外,真的没有办法让集合中的项目总数达到局部吗?

从Rails版本4.2开始 ,以下是可能的:

在partial中,您可以访问名为collection_iteration的函数/变量。 调用collection_iteration.size将为您提供总计。

来自更改日志 :

当使用集合渲染部分时,迭代对象可用作局部变量#{template_name}_iteration

它允许访问迭代的集合的size ,当前index和两个便利方法first? last?