我正在尝试在我的轨道中返回一组产品,这样当我在我的视图中进行迭代时,我可以将它们分开。
例如,如果我有13个产品,我希望视图中的块将前7个放在一行上,中断并将下一个6放在下一行(我使用css将一个架子放在下面产品)。
我一直在尝试使用find_in_batches,但似乎无法使其工作(甚至不确定它是否是合适的方法)。
@shelves = Product.find_in_batches(:batch_size => 7) { |products| products }
当我想根据日期进行分组时,我通常会使用group_by - 有没有办法使用group_by按计数分组,而不是模型属性?
答案 0 :(得分:4)
find_in_batches.map
会出现no block
错误。你真正想要的是:
@shelves = Product.all.in_groups_of(7)
如果您希望最后一个组没有额外填充nil
个对象,请尝试:
@shelves = Product.all.in_groups_of(7, false)
当然,您需要将all
替换为更合理的范围,这样您就不会将整个数据库对象列表加载到内存中:)
答案 1 :(得分:2)
您需要一组批次。只需映射批次即可。
@shelves = Product.find_in_batches(:batch_size => 7).map{|batch| batch}