我正在使用act_as_taggable_on在我们的项目中进行标记,以及使用sunspot / solr进行搜索。
我们得到一个奇怪的意外结果。首先我们的设置(简短版):
型号:
Class Person
has_many :projects
searchable do
string :project_tags, :multiple => true do
projects.map { |p| p.tag_list}.flatten
end
end
Taglist是act_as_taggable_on的一个方法,它为每个项目返回一个标签数组(f.e. [“foo”,“bar”])。我们为项目成员索引项目标签。
在我们的控制器中,当我们这样做时:
Person.search() do
with(:project_tags).any_of(params[:tags])
end
这会让合适的人回归。到目前为止一切都很好。
问题
我们希望能够搜索多个标签。因此,根据太阳黑子指令,我们传递一个数组。代码看起来大致如下:
@tags_array= params[:tags].split(/ /)
Person.search() do
with(:project_tags).any_of(@tags_array)
end
现在,无论我们使用什么标签,太阳黑子都会为我们每个人提供帮助!我们一直在控制台中测试这个疯狂,但无法理解我们哪里出错了。
任何帮助将不胜感激! 欧文
答案 0 :(得分:8)
好的,我们自己“解决”了这个问题,我会在这里报告,以防有人来看同样的问题。
不知怎的,Sunspot在我们的搜索声明中不喜欢@tags_array,经过一些测试,任何@variable都无效。我们一改为:
tags_array= params[:tags].split(/ /)
Person.search() do
with(:project_tags).any_of(tags_array)
end
它有效。
干杯,
欧文