在我的控制器中,我为对象组织获取了9行。
@organizations = Organization.where(parent_id: 1).order(city_id: :asc, is_vip: :desc, title: :asc).limit(25).sample(9)然后在视图中,我必须将这个9值分隔成3个视图循环,就像第一个.each对行的1-3、第二个对4-6、第三个对6-9所做的那样
我试着这样做:
- @organizations[0..2].each do |org|
...
- @organizations[3..5].each do |org|
...
- @organizations[6..8].each do |org|
...但是看起来我做错了什么,但到底是什么呢?怎样做才是正确的?
发布于 2014-04-16 04:45:06
不确定您的数据重复的原因。但是,您可以使用以下方法将数组拆分为片
您可以使用each_slice
@organization.each_slice(3) do |sliced_orgs|
end一些文档here
发布于 2014-04-16 06:42:01
首先,我真的不明白你为什么要使用.limit(25).sample(9),你可以把结果限制在9个。但也许你对sample引入的随机因子有一些用处?真奇怪。
除此之外,
@organizations[0..2].each do |org|
puts org
end
...应该可以很好地工作。如果数据重复,这是因为您的模型中有多次相同的条目。sample(9)采用随机的唯一条目,而@organizations[0..2]是一个固定范围,返回一个数组或nil。(Rubydoc:ary[range] → new_ary or nil)
简而言之,代码没有问题,但可能是数据/逻辑中的某个地方。
https://stackoverflow.com/questions/23094061
复制相似问题