这是我有用户帖子,我想把他们分成3个,但所有想到的是奇偶像这样:
@Post1 = Post.where('post_id % 2 = 0') @post2 = Post.where('post_id % 2 != 0')
有没有办法补充 @post3 把帖子分成三类。这是为了研究,谢谢。。
@post3
j2cgzkjk1#
你可以这样做:
@Post1 = Post.where('post_id % 3 = 0') @post2 = Post.where('post_id % 3 = 1') @post3 = Post.where('post_id % 3 = 2')
这和偶数/奇数的方法是一样的。%运算符返回除法的mod,因此您可以将其扩展到所需的任何数字。无论如何,不要认为这是一个好办法,特别是如果你的套数太多。我建议用 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
这样,您的代码就保持了更干净更易于维护。祝你好运!
1条答案
按热度按时间j2cgzkjk1#
你可以这样做:
这和偶数/奇数的方法是一样的。%运算符返回除法的mod,因此您可以将其扩展到所需的任何数字。无论如何,不要认为这是一个好办法,特别是如果你的套数太多。我建议用
in_groups_of
(https://apidock.com/rails/array/in_groups_of)方法。在您的案例中,您可以在组中使用如下内容:
这样,您可以这样分配它:
或者,我认为更好的方法是,只分配@posts变量。然后,在您的视图上,像这样迭代:
这样,您的代码就保持了更干净更易于维护。祝你好运!