我有一个相当典型的博客应用程序,其中包括show (帖子)和索引(帖子)方法:
class PostsController < ApplicationController
before_action :set_post, only: [:show, :edit, :update, :destroy]
def show
@post = Post.find(params[:id])
end
def index
# redirect_to post_path(Post.last) and return
@posts = Post.all.order(created_at: :desc).where('text like ?', "%#{params[:search]}%").page(params[:page]).per_page(6)
end
我将如何包含每个帖子下面的所有其他帖子(分页) - 减去您正在查看的帖子。所以我得到了类似的东西:
POST 4:blah blah blah
----档案-----
POST 5:blah blah blah
POST 3:blah blah blah
POST 2:blah blah blah
POST 1:blah blah blah
答案 0 :(得分:1)
Ruby的一个很酷的功能是减去数组的能力。你可以试试这个:
def show
@post = Post.find(params[:id])
@other_posts = Post.all - Array(@post)
end
然后在您的视图中对@other_posts
变量进行分页。
答案 1 :(得分:1)
类似的东西:
def show
@post = Post.find(params[:id])
@other_posts = Post.where.not(id: @post)
end
我将其用于其他解决方案的原因是因为您对@other_posts
的查询可能不包含@post
。通过这种方式,您可以确切地知道自己获得了什么。