2

エラスティックサーチを使用して、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