2

我正在尝试使用 elasticsearch 在我的 ruby​​ on rails 应用程序中实现自动完成。我按照以下链接中的示例进行操作

https://shellycloud.com/blog/2013/10/adding-search-and-autocomplete-to-a-rails-app-with-elasticsearch

它包括 html.slim 文件,但是当我尝试使用控制器执行此操作并查看文件时,后端没有任何反应。我没有看到 jQuery 正在运行。

我的代码如下。

app/models/result.rb

class Result < ActiveRecord::Base
  searchkick autocomplete: ['univ_name']
end

app/controllers/results_controller.rb包括以下方法

class ResultsController < ApplicationController
  def index
    if params[:query].present?
      @results = Result.search(params[:query], page: params[:page])
    else
      @results = Result.all.page params[:page]
    end
  end

  def autocomplete
    render json: Book.search(params[:query], autocomplete: true, limit: 10).map(&:title)
  end
end

app/views/index.html.erb

<%= form_tag results_path, class: "form-inline", method: :get do %>
  <div class="input-group input-group-lg" >
    <%if params[:query].present? %>
      <div class="input-group-btn">
    <%end%>
    <%= link_to "clear", results_path, class: "btn btn-default" %>
  </div>
  <%= text_field_tag :query, params[:query], class: "form-control", id: "result_search", autocomplete: "off" %>
  <div class=input-group-btn">
    <%= submit_tag "Search", class: "btn btn-primary" %>
  </div>
  </div>
<%end%>

app/assets/javascripts/results.js.coffee

$ ->
  $('#result_search').typeahead
    name: "result"
    remote: "/results/autocomplete?query=%QUERY"

我还包括

<%= javascript_include_tag "//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"%>
<%= javascript_include_tag "//cdnjs.cloudflare.com/ajax/libs/typeahead.js/0.9.3/ typeahead.min.js" %>
<%= stylesheet_link_tag "typeahead"%> 

我不知道我哪里出错了。谁能帮我这个?

任何帮助表示赞赏

4

0 回答 0