【发布时间】:2015-10-16 17:18:43
【问题描述】:
我正在尝试为我的 Widget 搜索中的用户设置过滤。我希望他们能够点击多个标签,并且只返回应用了正确标签的结果。
表格设置如下:
- 小部件有很多标签,通过标记
- 标签有很多小部件,通过标签
- 标签是一个连接表
在我的控制器中,我正在迭代小部件,并检查标签加入的条件:
@widgets = Widget.all
@current_tags = [1,5,7,10,15] # Passed in from params
@current_tags.each do |t|
@widgets = @widgets.joins(:tags).where("tags.id=?", t)
end
我只希望返回具有所有这些标签的小部件。
这似乎适用于一个标签,但是一旦您单击另一个标签,一旦您选择了多个标签,就会产生问题。例如,这会按预期返回小部件 1:
# Widget 1 is joined to tags 1,5,7,9
@current_tags = [5]
这不会返回任何结果,即使它应该返回小部件 1:
# Widget 1 has tags 1,5,7,9
@current_tags = [5,7]
我在检查标签和小部件之间的连接方面做错了吗?
【问题讨论】:
标签: ruby-on-rails ruby