0

我似乎无法找到一种方法来做到这一点。一些指导会很棒!

我正在建立一个类似网站的博客,其中包含帖子和帖子包含标签。标签和帖子由连接表保持在一起。我可以通过post.tags.

我试图进行搜索以显示包含某个标签的所有帖子。尝试了一段时间后,这是我想出的最好的:

def tag
 tag = Tag.find_by_title(params[:id])
 p = Post.page(params[:page]).per_page(7).all
 @posts = Array.new
 p.each do |p|
  if p.tags.include? (tag)
    @posts << p
  end
end

除了分页之外,这一切都有效。我认为必须有一个简单的 where 子句来简化这个?

谢谢!

编辑:

这是我的连接表

在此处输入图像描述

4

1 回答 1

1

下一个方法应该返回用 tag 标记的帖子数组:

@posts = Post.includes(:tags).where('tags.id' => tag.id)

您只需要保留方法的第一行并在之后添加上面的行。

请注意,要使其正常工作,您应该使用has_and_belongs_to_many.

于 2012-11-10T19:53:31.517 回答