我有一个简单的Rails应用程序,它有一个显示59个帖子的索引页。
问题在于,如果我搜索某些内容,Post.count会继续向我显示索引页面上的帖子的原始数量 - 例如,如果我搜索一个名为“Quilon”的帖子,我会得到搜索结果只显示1个帖子,但Post.count仍然显示原始帖子号码为59。
我该如何解决这个问题?
INDEX.HTML.ERB代码
<%= Post.count %>
在行李控制器中搜索功能
def index
@posts = Post.all
if params[:search]
@posts = @posts.search(params[:search]).order("created_at DESC")
end
if params[:zagat_status].present?
@posts = @posts.zagat_status(params[:zagat_status]).order("created_at DESC")
end
end
答案 0 :(得分:2)
在您的索引操作中,您可以使用某些条件缩小帖子范围,因此您应该使用@posts
变量,而不是模型Post
本身。
这意味着您要使用@posts.count
。
答案 1 :(得分:1)
您应该<%= @posts.count %>
代替<%= Post.count %>
。 <%= Post.count %>
会返回 所有记录的count
。它和
select count(*) from "posts"
因此忽略了条件。
答案 2 :(得分:1)
使用@ posts.count而不是Post.count