2016-05-18 4 views
0

これはレールアプリ用です。私はjsonファイルからデータを取り出す最良の方法を見つけようと努力してきましたが、私はどこでもやりたいことで答えを見つけることはできません。私はRails/JSON:JSONをjquery UIオートコンプリートフォームに使用する方法

universitydata.jsonとしての私のアプリ/資産/ JavaScriptのフォルダに上記を保存^^

[ 
    {"web_page": "http://www.usjc.uwaterloo.ca/", "country": "Canada", "domain": "usjc.uwaterloo.ca", "name": "University of St. Jerome's College"}, 
    {"web_page": "http://www.ustanne.ednet.ns.ca/", "country": "Canada", "domain": "ustanne.ednet.ns.ca", "name": "St. Anne University"} 
    ] 

そして:私は(それは長い8000本のラインのようなリストだ)のように、静的なデータのリストを持っています私のjavascript:

<%= f.text_field :university, :id => "university-field", :onkeydown=>"updateUniSearch()" %> 
01:

function updateUniSearch() { 
     $("#university-field").autocomplete({ 
       source: universitydata 
      }); 
    }   

ここで私はKeyDownイベントであるとしてupdateUniSearch()関数のためのイベントを持っている埋め込まれたルビーのファイルがあります

それでは、私は、次のようuniversitydata定義しましょう:

var universitydata = ["Maine", "Harvard"]; 

そして私は「m'-」メイン」がオプションとして表示されますオートコンプリートフォームに入力して行きます。しかし、このファイルで私はjavascript assetsフォルダにuniversitydata.jsonとして保存しましたが、何も起こりません。これをすべて間違って設定していますか?このjsonファイルを不適切に保存していますか?なぜローカル配列でしか動かないのですか?前もって感謝します。

答えて

1

いくつかのこと:

ほとんどのオートコンプリートLIBSは、一度入力するだけ「バインド」する必要があります。あなたのスタックオーバーフローポストに基づいて、あなたはonkeydownイベントで起こっています。したがって、入力するたびに入力に再バインドします。

ではなく、考えてみましょう:あなたは、ファイルからJSONデータをロードしたい場合は

$(document).on('ready', function(){ 
    $("#university-field").autocomplete({ 
    source: universitydata 
    }); 
}); 

これは、

第二に(ページの読み込み時に)一度だけオートコンプリートを結合し、あなたの主な質問に答えるために、それを変数にロードするためにAJAXリクエストを発行する必要があります。データが静的で、データセットが実際には小さい場合、オートコンプリートをバインドする前に変数としてロードするのは問題ありません。 .jsファイルでは、このすべての(データとあなたのオートコンプリートイベントが結合)を入れて、第三に、JavaSciptの規則は、変数名のためにヘビのケースをお勧めします

<script src="/your-path-to-the-javascript.js"></script> 

を使用するので、あなたの変数の命名を検討universityData

関連する問題