私はレールとJavaScriptが初めてで、私の人生ではこれを機能させることができません。そのため、ブートストラップの先行入力を使用してオートコンプリート機能を取得しようとしていますが、障害物にぶつかり続けています。
まず、このサイトの例を試してみると、すべてがうまく機能します。私のview
中で私は持っています
<input input="text" name="query" id="search" autocomplete="off" />
私のapplication.js
中で私は持っています
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require twitter/bootstrap
//= require jquery-fileupload/basic
//= require_tree .
私のjavascriptアセットフォルダーには、custom.js
javascriptをダンプする場所という名前のファイルがあります。
私が持っているそのファイルに
var colors = ["red", "blue", "green", "yellow", "brown", "black"];
$('#search').typeahead({source: colors});
ビューを開くと、ブートストラップがtypeahead
機能するテキストフィールドが表示されます。
しかし、静的配列を使用して値を検索したくありません。データベース列にアクセスし、その列からすべての値を検索し (これらの値はすべて一意です)、理想的には付随する ID を入力に提供します。分野。それで私はグーグルで離れて、残念ながら同時に初めてJavaScriptを理解しようとしました。
この質問、または非常によく似た質問は、ここで数十回尋ねられましたが、どういうわけか、それらのどれも私のコードを機能させませんでした。
いくつかの回答でこのスクリプトが提案されましたが、コードをコピーしbootstrap-typeahead.js
てファイルから通常どおり動作するjsとして保存すると、動作custom.js
が停止します(間違っていますか?)。
だから私が試したのは、ブートストラップサイトで提案されている最小限の作業ソリューションでした。私が試しているコードはこれですcustom.js
$('#search').typeahead({
source: function (query, process) {
$.get('sources', { query: query }, function (data) {
return process(JSON.parse(data));
});
}
});
コントローラのアクションは次のようになります
def index
if params[:query]
@sources = Source.find(:all, :conditions => ['name LIKE ?', "%#{params[:query]}%"])
else
@sources = Source.all
end
respond_to do |format|
format.html # index.html.erb
format.json { render json: @sources }
end
end
ですから、ここで私は現在の理解能力の限界に達しているのかもしれません。ビューをレンダリングして入力フィールドに入力すると、コンソールが表示されます
Started GET "/sources?query=s" for 127.0.0.1 at 2013-05-06 12:30:10 +0000
Processing by SourcesController#index as */*
Parameters: {"query"=>"s"}
Source Load (0.9ms) SELECT "sources".* FROM "sources" WHERE (name LIKE '%s%')
Rendered sources/index.html.erb within layouts/application (0.2ms)
Rendered layouts/_shim.html.erb (0.1ms)
Rendered layouts/_header.html.erb (2.8ms)
Completed 200 OK in 194ms (Views: 189.8ms | ActiveRecord: 0.9ms)
私の関数は正しいアクションと正しいクエリを呼び出しています...しかし、それは何かを返しますか? 入力フィールドには何も表示されません (名前列に値 KG-01 を持つレコードが 1 つあります)。関数の json 出力が何であるかを確認するにはどうすればよいですか? ここでどこが間違っていますか?