按类型循环排序条目

时间:2012-11-26 16:45:22

标签: ruby-on-rails loops

我在Rails中写这个,但我怀疑逻辑不是特定于Rails的 - 我有一个条目列表,它们都是两种类型之一,照片和视频。

目前我有一个以反向日期顺序在列表中运行的循环,输出两种类型的混合。下面是我的循环示例,它不是实际代码,但逻辑是相同的:

post_count = 1
 if post_count < 2
    if post.type == 'photo'
       <div>post.title</div>
       post_count = post_count + 1
    end
 else
    if post.type == 'photo'
       <div>post.title</div>
       post_count = post_count + 1
    elsif post.type == 'video'
       <div>post.embed_code</div>
       post_count = post_count + 1
    end
 end

这接近我想要的,因为我想要将这两种类型混合到一定程度,但我想知道是否可以让循环拉出前两个照片条目并首先渲染它们,然后正常输出列表的其余部分,包括列表中较早出现的所有视频条目。

这对我来说听起来有点令人费解,所以这是一个图表,右边有所需的结果:

List

提前致谢。

1 个答案:

答案 0 :(得分:1)

嗯,不确定这是不是你想要的,但看看:

@posts.select{ |post| post.type == 'photo' }.first(2).each do |photo_post|
  @posts.delete_if{ |post| post == photo_post }

  # display photo_post
  # <div>post.title</div>

@posts.each do |post|
  post.try(:title) || post.try(:embed_code)

此代码假设@posts是按照您的意愿排列的照片/视频列表(按日期排序)。它不应该支持nil个案例。