0

私はこれをRailsで書いていますが、ロジックはRails固有ではないと思います。写真とビデオの2つのタイプのいずれかであるエントリのリストがあります。

現時点では、日付の逆順でリストを実行しているループがあり、2つのタイプの組み合わせを出力しています。以下は私が持っているループの例です。これは実際のコードではありませんが、ロジックは同じです。

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

2つのタイプをある程度混合したいので、これは私が望むものに近いですが、ループで最初の2つの写真エントリを引き出し、それらを最初にレンダリングしてから、残りを出力することが可能かどうかを知りたいと思いました。リストの前に表示された可能性のあるビデオエントリを含め、通常どおりリストの

それは私には少し複雑に聞こえるので、ここに図があり、右側に望ましい結果があります:

リスト

前もって感謝します。

4

1 に答える 1

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ケースをサポートするべきではありません。

于 2012-11-26T17:15:50.273 に答える