Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.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 带searchkick的多字段搜索_Ruby On Rails_Searchkick - Fatal编程技术网

Ruby on rails 带searchkick的多字段搜索

Ruby on rails 带searchkick的多字段搜索,ruby-on-rails,searchkick,Ruby On Rails,Searchkick,我用searchkick字段搜索多表的代码似乎不起作用 search = params[:term].present? ? params[:term] : nil combos = if search Combo.search(search, fields: [:game_name, :character_name]) else Combo.all.page(params[:page]) end 我得到一份工作 F、 [2018-05-11T05:11:29.348920#4]致命-

我用searchkick字段搜索多表的代码似乎不起作用

search = params[:term].present? ? params[:term] : nil

combos = if search
  Combo.search(search, fields: [:game_name, :character_name])
else
  Combo.all.page(params[:page])
end
我得到一份工作

F、 [2018-05-11T05:11:29.348920#4]致命--:

在我的heroku日志中。我觉得这是一个快速解决办法,但我被难住了

编辑添加的日志和文件

2018-05-11T06:09:08.074664+00:00 heroku[router]: at=info method=GET path="/" host=combobook.net request_id=6ef470c5-6df6-46ca-b73c-8e6e1bf9a6e3 fwd="72.83.52.163,172.68.65.219" dyno=web.1 connect=0ms service=36ms status=200 bytes=6168 protocol=https
2018-05-11T06:09:55.502333+00:00 heroku[router]: at=info method=GET path="/combos?utf8=%E2%9C%93&term=r&button=" host=combobook.net request_id=107260a0-8790-4e4e-b435-ec7ee557b5ed fwd="72.83.52.163,172.68.65.217" dyno=web.1 connect=1ms service=59ms status=500 bytes=1827 protocol=https
2018-05-11T06:09:55.443112+00:00 app[web.1]: I, [2018-05-11T06:09:55.442916 #4]  INFO -- : [107260a0-8790-4e4e-b435-ec7ee557b5ed] Started GET "/combos?utf8=%E2%9C%93&term=r&button=" for 172.68.65.217 at 2018-05-11 06:09:55 +0000
2018-05-11T06:09:55.445117+00:00 app[web.1]: I, [2018-05-11T06:09:55.445002 #4]  INFO -- : [107260a0-8790-4e4e-b435-ec7ee557b5ed] Processing by CombosController#index as HTML
2018-05-11T06:09:55.445293+00:00 app[web.1]: I, [2018-05-11T06:09:55.445162 #4]  INFO -- : [107260a0-8790-4e4e-b435-ec7ee557b5ed]   Parameters: {"utf8"=>"✓", "term"=>"r", "button"=>""}
2018-05-11T06:09:55.488673+00:00 app[web.1]: D, [2018-05-11T06:09:55.488519 #4] DEBUG -- : [107260a0-8790-4e4e-b435-ec7ee557b5ed]   [1m[33mCombo Search (40.2ms)[0m  curl https://spruce-6383279.us-east-1.bonsaisearch.net:443/combos_production/_search?pretty -H 'Content-Type: application/json' -d '{"size":10000,"from":0,"query":{"dis_max":{"queries":[{"match":{"game_name.analyzed":{"query":"r","boost":10,"operator":"and","analyzer":"searchkick_search"}}},{"match":{"game_name.analyzed":{"query":"r","boost":10,"operator":"and","analyzer":"searchkick_search2"}}},{"match":{"game_name.analyzed":{"query":"r","boost":1,"operator":"and","analyzer":"searchkick_search","fuzziness":1,"prefix_length":0,"max_expansions":3,"fuzzy_transpositions":true}}},{"match":{"game_name.analyzed":{"query":"r","boost":1,"operator":"and","analyzer":"searchkick_search2","fuzziness":1,"prefix_length":0,"max_expansions":3,"fuzzy_transpositions":true}}},{"match":{"character_name.analyzed":{"query":"r","boost":10,"operator":"and","analyzer":"searchkick_search"}}},{"match":{"character_name.analyzed":{"query":"r","boost":10,"operator":"and","analyzer":"searchkick_search2"}}},{"match":{"character_name.analyzed":{"query":"r","boost":1,"operator":"and","analyzer":"searchkick_search","fuzziness":1,"prefix_length":0,"max_expansions":3,"fuzzy_transpositions":true}}},{"match":{"character_name.analyzed":{"query":"r","boost":1,"operator":"and","analyzer":"searchkick_search2","fuzziness":1,"prefix_length":0,"max_expansions":3,"fuzzy_transpositions":true}}}]}},"timeout":"11s","_source":false}'
2018-05-11T06:09:55.497046+00:00 app[web.1]: I, [2018-05-11T06:09:55.496903 #4]  INFO -- : [107260a0-8790-4e4e-b435-ec7ee557b5ed] Completed 500 Internal Server Error in 51ms (Searchkick: 40.2ms | ActiveRecord: 0.0ms)
2018-05-11T06:09:55.498165+00:00 app[web.1]: F, [2018-05-11T06:09:55.498095 #4] FATAL -- : [107260a0-8790-4e4e-b435-ec7ee557b5ed]   
2018-05-11T06:09:55.498556+00:00 app[web.1]: F, [2018-05-11T06:09:55.498491 #4] FATAL -- : [107260a0-8790-4e4e-b435-ec7ee557b5ed] NoMethodError (undefined method `joins' for #<Searchkick::Results:0x00000005165940>):

嘿,我可以检查搜索词是否不存在,它会获取活动记录结果,而不是Serachkiq结果

下面的代码你可以试试

search = params[:term].present? ? params[:term] : '*'

combos = Combo.search(search, fields: [:game_name, :character_name], page: params[:page])

希望能获得更多详细信息,请提供有关组合的详细信息。

未定义的方法
连接
具体用于什么?我确信这个信息在日志中。这个错误在你的代码中指向哪里?我对Combo.search做了更改,但仍然得到相同的错误。你能提供更多关于在哪一行得到这个错误的详细信息吗?我添加了控制器操作,它看起来像一个活动记录问题。Yup联接方法不适用于Searckick results relation。要联接一个关系,您可以遵循此操作,对于其他功能,请查看提供的文档
  def sort_and_paginate_combos(combos)
    combos.joins(:stars)
          .group(:id)
          .order('COUNT(stars.id) DESC')
          .page(params[:page])
  end
search = params[:term].present? ? params[:term] : '*'

combos = Combo.search(search, fields: [:game_name, :character_name], page: params[:page])