我似乎找不到办法做到这一点。一些指导会很棒!
我正在建立一个类似网站的博客,帖子和帖子包含标签。标签和帖子通过连接表保存在一起。我可以通过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子句来简化这个?
谢谢!
编辑:
这是我的联接表
答案 0 :(得分:1)
下一个方法应该返回带有标记的帖子数组:
@posts = Post.includes(:tags).where('tags.id' => tag.id)
您只需要保留方法的第一行并在之后添加上面的行。
请注意,要使其正常运行,您应该使用has_and_belongs_to_many
在模型中定义帖子和标记之间的关系。