2016-09-10 7 views
0

私は、検索フィールドにjQuery-uiオートコンプリート機能を追加するためのYouTubeチュートリアルをたどりました。これはチュートリアル:https://www.youtube.com/watch?v=iMz8HmrQ350へのリンクです。Ruby on Rails:なぜ私のjQuery-uiオートコンプリートが機能していないのですか?

チュートリアルを繰り返して構文を再確認しても、何らかの理由で機能しません。私は、Webブラウザをリロードしても何のエラーも表示されませんが、検索フィールドに入力すると何もドロップダウンメニューとして表示されません。興味深いことに、サンプルデータ用の配列を使用すると、サンプル配列データを使用した提案付きのドロップダウンメニューが表示されます。しかし、私が投稿のデータベースにリンクしようとすると、それはもはや機能しません。以下の両方の方法のサンプルコードを示しました。

私のコードは以下の通りです。何か助けがありましたら、私は無数のチュートリアルや方法を試しながらこの機能を追加しようとしています。それは迷惑なハハを得ている。

私はコーディングが初めてで、これまで自分自身に教えてきました。他のファイルが必要な場合は教えてください。

PS。私は現在、単純な検索のために弾性検索と検索キックを使用しています。それはおそらくオートコンプリート機能が動作していないことと関係がありますか?私はまた、宝石を使用しています:知っていることが重要なことを私の宝石ファイルに入れて、 "宝石のクエリー - ウイレール"

posts.coffee

jQuery -> 
$('#search').autocomplete 
    source: "/search_suggestions" 

search_suggestions_controller.rbは

class SearchSuggestionsController < ApplicationController 

    def index 
     render json: SearchSuggestion.terms_for(params[:term]) 
    end 
end 

私はサンプルデータとしてARRAYを使用している場合は、それが動作します - 例:

class SearchSuggestionsController < ApplicationController 

    def index 
     render json: %w[test test1] 
    end 
end 

MODEL:search_suggestion.rb

class SearchSuggestion < ApplicationRecord 

    attr_accessible :popularity, :term 

    def self.terms_for(prefix) 
     suggestions = where("term like ?", "#{prefix}_%") 
     suggestions.order("popularity desc").limit(10).pluck(:term) 
    end 

    def self.index_posts 
     Post.find_each do |post| 
      index_term(post.title) 
      post.title.split.each { |t| index_term(t) } 
     end 
    end 

    def self.index_term(term) 
     where(term: term.downcase).first_or_initialize.tap do |suggestion| 
      suggestion.increment! :popularity 
     end 
    end 
end 

タスクファイル:search_suggestions.rake

namespace :search_suggestions do 
    desc "Generate search suggestions from posts" 
    task :index => :environment do 
     SearchSuggestion.index_posts 
    end 
end 
+0

誰ですか?嘆願書 – koz

答えて

0

それはあなたの配列スタブで動作する場合、それはあなたのJSはおそらく働いている、とあなたのコントローラ/モデルで起こっているファンキーな何かがあることを意味します。

jqueryのリクエストをブラウザで確認しましたか?と応答?

私はあなたのデータは構造化されているかわからないんだけど、

suggestions = where("term like ?", "#{prefix}_%")

は少し怪しげに見えます。

チェックするためにいくつかのポイント:

  1. は、お使いのブラウザでデベロッパーコンソールからの要求を確認してください。パラメータparamが正しく送信されているかどうか、応答ペイロードに何かがあるかどうかを確認してください(レスポンスが空になったように見えます)

  2. あなたのコントローラ/モデルでpryを使用し、クエリの結果suggestions = where("term like ?", "#{prefix}_%")

  3. レーキタスクが実際に動作しているかどうかを確認します(レーキタスクを正しく実行しましたか?)。あなたの条件が適切に設定されているかどうか。 (コンソールにSearchSuggestion.allのようなものがあります)

関連する問題