0

カテゴリに属する​​動画のリストがあります。誰かがビデオのショーアクションに行くとき、私はそのビデオをリストの最初に置き、次に同じカテゴリに属する​​他のすべてのビデオを名前順にリストするようにします。

私はこの問題を最もよく説明する方法を考えていましたが、私が達成しようとしていることを視覚的に説明する方がよいという結論に達しました。すべての動画のIDが1〜6であるとします(わかりやすくするために順序を削除します)。IDパラメータが4の場合、次の順序を適用します。4-5-6-1-2-3

つまり、すべての動画が一覧表示されるまで、一覧を折り返す必要があります。動画の数は変わる可能性がありますが、クエリの前に動画の数をカウントすることは可能です。

4

2 に答える 2

0

これは非常に簡単なようです。

コントローラ内:

@video = Video.find(params[:id])
@similar_videos = @video.category.videos

あなたの見解では:

= render @video
= render @similar_videos - @video
于 2012-07-11T06:09:02.600 に答える
0

これを行うには、いくつかのwhereクエリを使用する必要があります。@selectedvideoユーザーが選択した動画を撮りましょう。

それで:

@highervids = Video.where(
  'category = ? AND id > ?',
  @selectedvideo.category, @selectedvideo.id
).order("id DESC")

@lowervids = Video.where(
  'category = ? AND id < ?',
  @selectedvideo.category, @selectedvideo.id
).order("id DESC")

つまり、基本的に、選択したビデオの前のすべての@lowervidsビデオと後のビデオが入って@highervidsおり、それらはすべて降順です。これで、それらを簡単にレンダリングできます。

于 2012-07-11T06:48:10.533 に答える