2012-03-19 15 views
2

リモートサービスを使用して、レールにあるオートコンプリートフィールドにデータを入力しようとしています。私はプレースホルダのルートを持っている私のroutes.rbをでRails JSONによるオートコンプリートが失敗する

class ServicesController < ApplicationController 
def employeeAutocomplete 
    @banner = employeeSearch(params[:term]) 
    respond_to do |format| 
    format.json { render :json => @banner.to_json } 
    end 
end 

:私が外にデータベースからデータを収集しemployeeAutocompleteと呼ばれる私のコントローラ内のアクションを持っている最後の名前で

を利用できる従業員を照会して返すことになっています:

match '/banner/cheese' => 'services#employeeAutocomplete' 

私は正常http://0.0.0.0:3000/banner/cheese.json?term=macを参照して、このような従業員データを以下のように配列を受け取ることができます。

[ {"LAST_NAME": "MacDougal", "FIRST_NAME": "Elaine", "TITLE": "Internet Technician"}, {"LAST_NAME": "MacCallum", "FIRST_NAME": "Harvey", "TITLE": "Systems Architect"} ] 

ただし、これはオートコンプリートフィールドでは機能しません。ここに私のビューのためのjavascriptです:

$("#service_employeeLast").autocomplete({ 
    source: "/banner/cheese.json" 
}); 

私は放火魔コンソールにエラーが表示されます。私は知恵の終わりだ I receive an error in the firebug console

。私は何が間違っているのかわからない、私は2つの異なるオートコンプリートプラグインを試して、この同じエラーjquery.jsを続けている:8103

ヘルプ!

+0

JavaScriptコンソールに表示されるエラーのテキスト全体を表示できますか? – jergason

+0

それです。 GET http://.0.0.0.0:3000/banner/cheese.json?term=mccと表示され、jquery.js:8103と表示されます。[image](http://i.imgur.com/CRn6Z)です。 png) – Oranges13

+0

私は、 "label"、 "value"のキーに合うように戻ってきたjsonを修正しただけで、違いはありません。私はまだWebブラウザを介してURLにアクセスできますが、javascriptはアクセスできないような動作をします。生成された配列をソースに直接貼り付けるとうまくいきます!ここで経路指定に何か問題があります。私ができるようにバックエンドjsがURLにアクセスできないのはなぜですか? – Oranges13

答えて

2

Google Chromeが問題の原因かどうかは分かりません。どうやら、localhost ajax呼び出しが嫌いです。ここで更新されたコードは、意図したとおりに機能さ:

$(function() { 
$("#service_employeeLast").autocomplete({ 
    source: "/banner/fetch", 
    minLength: 2, 

}); 
}); 

services_controller

services.js

def employeeAutocomplete 
    @banner = employeeSearch(params[:term]) 
    @banner_hash = [] 
    @banner.each do |b| 
     @banner_hash << { 
      :title => b["POSITION_TITLE"], 
      :label => [b["FIRST_NAME"], b["LAST_NAME"]].join(" "), 
      :value => b["LAST_NAME"], 
     } 
    end 
    render :json => @banner_hash 
end 

あなたの戻り値のハッシュは、ラベルと値のキー/値のペアを持っていることをここにもキー

1

多分render :json => @banner.to_jsonでデータを2回エンコードしました。それはrender :json => @bannerであり、データは自動的にエンコードされます。

+0

ありがとうございます。しかし、差をつけるようには見えなかった:( – Oranges13

関連する問題