2013-02-28 124 views
0

查看jQuery的Tokeninput不顯示結果從JSON結果

= text_field_tag :food_tokens 

FoodsController

def search 
    @foods = Food.where("name LIKE ?" , "%#{params[:q]}%") 
    respond_to do |format| 
    format.json { render json: @foods.as_json(only: [:id, :name]) } 
    end 
end 

路線

match '/search' => 'foods#search' 

的application.js

$(function() { 
    $('#food_tokens').tokenInput('/search.json', { crossDomain: false } 
}); 

輸出/search.json

[{"id":"5","name":"Apple"},{"id":"6","name":"Burger"}] 

當我開始輸入 '蘋果' 到文本字段中,我得到了 「沒有結果」 的消息。

任何見解?

+0

什麼呢'$獲得( '/ search.json');'回報? – martriay 2013-02-28 23:27:20

+0

'$ .get('/ search.json');返回這個對象。 我忽略了很多內容,但其中包含: 'responseText:「[ {「id」:「5」,「name」:「Apple」},{「id」:「6」,「name」:「Burger」}]「' – jamesfzhang 2013-03-01 01:47:29

回答

0

我認爲這個問題是你沒有正確關閉.tokenInput方法,應該是這樣的:

$(function() { 
    $('#food_tokens').tokenInput('/search.json', { crossDomain: false }); 
}); 
+0

抱歉,我忘記關閉'.tokenInput' OP。出於挫折,我轉向使用https://github.com/twitter/typeahead.js並取得了成功。如果有人知道代碼有什麼問題,我仍然會保留這個令牌輸入問題分支。 – jamesfzhang 2013-03-01 03:44:57

0

我認爲這是因爲大寫字母。我有一個類似的問題,我稍微改變了代碼。首先,我在012問題的answer之後更改了"name LIKE ?""name ILIKE ?"。其次,我改變了jquery.tokeninput.js行797從這個

if(input_box.val().toLowerCase() === query) { 
    populate_dropdown(query, settings.jsonContainer ? results[settings.jsonContainer] : results); 
} 

這個

if(input_box.val() === query) { 
    populate_dropdown(query, settings.jsonContainer ? results[settings.jsonContainer] : results); 
}