在我的控制器中,我为对象组织提取了9行。
@organizations = Organization.where(parent_id: 1).order(city_id: :asc, is_vip: :desc, title: :asc).limit(25).sample(9)
然后在视图中我必须将这9个值分隔为3个视图循环,如第一个。如果行为1-3,则为4-6,第三个为6-9
我试试:
- @organizations[0..2].each do |org|
...
- @organizations[3..5].each do |org|
...
- @organizations[6..8].each do |org|
...
但似乎我做错了什么,但具体到底是什么?以及如何做到对不对?
答案 0 :(得分:5)
不确定您的数据为何重复。但是您可以使用以下方法将数组拆分为切片
您可以使用each_slice
@organization.each_slice(3) do |sliced_orgs|
end
一些文档here
答案 1 :(得分:0)
首先,我不明白您使用.limit(25).sample(9)
的原因,您可以将结果限制为9。但也许你有一些使用样本引入的随机因素?奇怪。
除此之外,
@organizations[0..2].each do |org|
puts org
end
...
应该完美无缺。如果重复数据,那是因为您在模型中有多次相同的条目。 sample(9)
采用随机唯一条目,@organizations[0..2]
是返回数组或nil的固定范围。 (Rubydoc:ary[range] → new_ary or nil
)
简而言之,代码没有任何问题,但可能是数据/逻辑中的某个地方。