0

看法

= text_field_tag :food_tokens

食品控制器

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'

应用程序.js

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

/search.json 的输出

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

当我开始在文本字段中输入“Apple”时,我收到“无结果”消息。

有什么见解吗?

4

2 回答 2

0

我认为问题在于您没有.tokenInput正确关闭该方法,应该是这样的:

$(function() {
  $('#food_tokens').tokenInput('/search.json', { crossDomain: false });
});
于 2013-03-01T03:02:11.870 回答
0

I think it is because of the capital letter. I had a similar problem and I changed the code slightly. First, I changed "name LIKE ?" for "name ILIKE ?" following this SO question's answer. Secondly, I changed the line 797 of jquery.tokeninput.js from this

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

to this

if(input_box.val() === query) {
  populate_dropdown(query, settings.jsonContainer ? results[settings.jsonContainer] : results);
}
于 2014-01-15T10:10:15.513 回答