我正在开发一个Rails应用程序,我遇到了一个障碍:我需要在一个表中返回几个项,比如说,第6-8个匹配项。具有讽刺意味的是,Rails在这里通过.fifth.为.first显示了一个helper method
我的问题是:当你要搜索的n只有6,7,8,以此类推的时候,你怎么能找到这些结果,而不调用所有的1到8个项目?
这就是我这么做的原因。我正在为一个博客做主页。在顶部,我想要显示最近的5个帖子(将与图像一起显示)。在它们下面,我想以文本的形式显示另外三个指向帖子的链接。
目前,我正在做的第一部分很好。在我的blog.controller.rb中:
@posts = Post.order('created_at DESC').first(5)然后,我在视图中遍历帖子,结果显示了我的前五个最新结果。现在我想展示第6-8,我将尝试用一种新的方法来存储它们。我将控制器更改为:
@posts = Post.order('created_at DESC').first(5)
@texts = Post.order('created_at DESC').limit(8) 这将返回8个最新的帖子,而不仅仅是第8个帖子。
是否可以将@texts限制为仅显示匹配的第6、7和8个结果?
发布于 2016-08-24 13:13:29
是。您将希望使用offset来获取它们。下面是关于offset的文档:http://apidock.com/rails/ActiveRecord/QueryMethods/offset
Post.order(created_at: :desc).limit(3).offset(5)
发布于 2016-08-24 15:47:20
节省一些数据库时间,并在单个查询中完成,如下所示
@texts = Post.order('created_at DESC').limit(8).to_a
@posts = @texts.shift(5) # takes the first 5 records from @texts leaving the remaining 3 https://stackoverflow.com/questions/39114881
复制相似问题