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?
。