每个循环使用from到

时间:2014-04-15 20:38:32

标签: ruby-on-rails ruby haml

在我的控制器中,我为对象组织提取了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|
...

但似乎我做错了什么,但具体到底是什么?以及如何做到对不对?

2 个答案:

答案 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

简而言之,代码没有任何问题,但可能是数据/逻辑中的某个地方。