Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 对太阳黑子的搜索有很多联系_Ruby On Rails_Sunspot - Fatal编程技术网

Ruby on rails 对太阳黑子的搜索有很多联系

Ruby on rails 对太阳黑子的搜索有很多联系,ruby-on-rails,sunspot,Ruby On Rails,Sunspot,我不明白我怎么能用太阳黑子来搜索一个有很多联系的地方。用户从选择标记字段中选择技能,结果返回与技能ID匹配的记录 为了记录在案,当我按下搜索按钮时,我得到了以下信息: SOLR Request (294.1ms) [ path=select parameters={fq: ["type:User"], q: ["4"], fl: "* score", qf: "", defType: "edismax", start: 0, rows: 30} ] q:[“4”]提到了数字4,它是我搜索的技

我不明白我怎么能用太阳黑子来搜索一个有很多联系的地方。用户从选择标记字段中选择技能,结果返回与技能ID匹配的记录

为了记录在案,当我按下搜索按钮时,我得到了以下信息:

SOLR Request (294.1ms)  [ path=select parameters={fq: ["type:User"], q: ["4"], fl: "* score", qf: "", defType: "edismax", start: 0, rows: 30} ]
q:[“4”]
提到了数字4,它是我搜索的技能的ID。当我被要求拿回一些东西时,我没有得到任何结果。当我提交时没有参数,我会将所有用户作为结果返回

到目前为止,我所做的工作和发现的都可以在下面找到。任何正确方向的提示或帮助都将不胜感激

(如果您需要任何其他信息,请告诉我,我将立即添加)

我的结构如下:

用户模型中的(user.rb)

技能模型中的(skill.rb)

数据库模式:

t.string   "name"
t.string   "category"
t.string   "slug"
t.integer "user_id"
t.integer "skill_id"
用户技能模型中的(User\u skill.rb)

数据库模式:

t.string   "name"
t.string   "category"
t.string   "slug"
t.integer "user_id"
t.integer "skill_id"
在我的搜索控制器中,我有以下代码段:

@search = Sunspot.search(User) do
  fulltext params[:s_skills]
end

@users = @search.results
params[:s_skills]是从选择标记中提取的技能ID:

<%= select_tag :s_skills, options_for_select(Skill.all.collect{|e| [e.name,e.id]}, skills), {:id => 'e2', :multiple => true, :placeholder => "Input skills", class: "input-search2" } %>
'e2',:multiple=>true,:placeholder=>“输入技能”,类:“Input-search2”}%>

它接受技能的名称并返回其ID。

您实际上没有在已索引的
技能ID
字段中搜索

您必须添加以下内容:

User.search do
   fulltext params[:free_text]   #<-- YOU DON'T NEED THIS, PROBABLY?
   with(:skill_ids, params[:s_skills]) if params[:s_skills]
end
User.search do

全文参数[:free_text]#谢谢您的帮助,不过它确实会显示与任一ID匹配的记录。例如,如果我搜索Ruby和Java,当我想看到同时拥有Ruby和Java技能的用户时,它会向我显示具有Ruby或Java技能的用户。有没有办法调整这个?修正了。我只是用“所有的”。万分感谢
User.search do
   fulltext params[:free_text]   #<-- YOU DON'T NEED THIS, PROBABLY?
   with(:skill_ids, params[:s_skills]) if params[:s_skills]
end