这是 我有用户帖子,我想把它们分成3个但是所有想到的东西都很奇怪/甚至像这样:
@Post1 = Post.where('post_id % 2 = 0')
@post2 = Post.where('post_id % 2 != 0')
有没有办法添加@post3
并将帖子分成3个类别。这是出于研究目的而感谢..
答案 0 :(得分:1)
你可以这样做:
@Post1 = Post.where('post_id % 3 = 0')
@post2 = Post.where('post_id % 3 = 1')
@post3 = Post.where('post_id % 3 = 2')
这与偶数/奇数相同。
%运算符返回除法模式,因此您可以将其扩展为您想要的任何数字。无论如何,不要认为这是一个很好的方法,特别是如果您的数量太高。我建议使用in_groups_of
(https://apidock.com/rails/Array/in_groups_of)方法。
在您的情况下,您可以像这样使用in_groups_of:
@posts = Post.all.in_groups_of((Post.count.to_f/3).ceil, false)
就像这样,您可以像这样分配:
@Post1 = @posts[0]
@post2 = @posts[1]
@post3 = @posts[2]
或者,我认为会更好,只是分配你的@posts变量。然后,在您的视图中,您可以像这样迭代它:
- @posts.each do |group_of_posts|
- group_of_posts.each do |post|
# do whatever you want
就像那样,您的代码更清晰,更易于维护。祝你好运!