0

Rails 3.2.0でjQueryオートコンプリートを設定しようとしています。私はデータソースとしてjavascriptで配列を設定するとうまく動作します。私の問題は、検索用語が最終的にはページロード中に読み込むには多すぎるということです。リモートデータソースを設定しようとしていますが、ページにコンテンツを入力できません。Rails経由でjQueryオートコンプリートマルチプルリモートデータ

データが返されていますが、選択項目にデータが入力されていません。このコードの大部分は、jQuery UIのデモサイトから直接得られたものです。

私には何が欠けていますか?

$("#tags") 
    // don't navigate away from the field on tab when selecting an item 
    .bind("keydown", function(event) { 
     if (event.keyCode === $.ui.keyCode.TAB && 
      $(this).data("autocomplete").menu.active) { 
       event.preventDefault(); 
      } 
    }) 
    .autocomplete({ 
     source: function(request, response) { 
      $.getJSON("get/tags", { 
       term: extractLast(request.term) 
      }, response.name); 

      }, 
      search: function() { 
       // custom minLength 
       var term = extractLast(this.value); 
       if (term.length < 2) { 
        return false; 
       } 
      }, 
      focus: function() { 
       // prevent value inserted on focus 
       return false; 
      }, 
      select: function(event, ui) { 
       var terms = split(this.value); 
       // remove the current input 
       terms.pop(); 
       // add the selected item 
       terms.push(ui.item.value); 
       // add placeholder to get the comma-and-space at the end 
       terms.push(""); 
       this.value = terms.join(", "); 
       return false; 
      } 
     }); 
+0

ここで 'extractLast'関数はありますか? –

+0

また、AJAXリクエストが何をしているのか見てきましたか?デベロッパーツールのレスポンスはどのようなものですか? –

答えて

1

私の問題が見つかりました。愚かな私。オートコンプリートプラグインに関するすべてのドキュメントを読むことは役に立ちます。私の問題は、私が適切な「JSON」と呼ばれる配列を提供していないことでした。 [{ラベル: "Choice1"、値 "VALUE1"}、...]

だから作成jQuery UIページ

ラベルと値の特性を持つオブジェクトの配列から引用

:$ .getJSON上記の私のコードでも
def get_tags 
    @tags = Tag.where(['name LIKE ?', "#{params[:term]}%"]) 
    @tags_hash = [] 

    @tags.each do |tag| 
     @tags_hash << { label: tag.name } 
    end 

    render json: @tags_hash 
end 

がそうのように定義する必要があります。このようなあなたのRailsアプリでJSONをレンダリング
関連する問題