0

我有一个属于某个类别的视频列表。当有人转到视频的显示操作时,我希望该视频在列表中排在第一位,然后列出属于同一类别的所有其他视频,按名称排序。

我一直在想办法最好地描述这个问题,并得出结论,最好直观地解释我想要实现的目标。假设每个视频都有一个从 1 到 6 的 ID(为简单起见,删除排序)。如果 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 回答