使用typeahead.js + Searchkick实现自动完成功能

时间:2014-05-25 03:26:10

标签: ruby-on-rails autocomplete elasticsearch jquery-autocomplete searchkick

我正在尝试使用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"%> 

我不知道我哪里错了。任何人都可以帮我这个吗?

感谢任何帮助

0 个答案:

没有答案