来自railscasts tokeninput

时间:2015-10-16 14:37:15

标签: ruby-on-rails ruby jquery-tokeninput jquery-rails

我正在使用railscasts tokeninput插件进行自动完成。我只希望下拉列表中显示的那些条目未包含在输入字段

我的JS代码是

$(function() {
  $("#category").tokenInput("/products/product_categories.json", {
    crossDomain: false,
    prePopulate: $("#category").data("pre"),
    theme: "facebook"
  });
});

我的控制器是

def product_categories
category = Category.where("name like ?", "%#{params[:q]}%")
respond_to do |format|
  format.html
  format.json { render :json => category.map(&:attributes) }
end

它工作正常,但问题是每次都出现相同的列表。让我们假设在dropdwon列表中有两个条目亚洲和非洲。将亚洲添加到输入字段后,再次单击字段时,亚洲和非洲都会出现。

我希望如果输入字段中已包含条目,则它不得出现在下拉列表中

1 个答案:

答案 0 :(得分:1)

如果您正在使用JQuery tokeinput,则有2个选项可以防止重复

  1. 使用preventDuplicates选项,即使用户从列表中多次选择相同的选项,也只会添加一次。
  2. 使用回调onResult来操作响应数据。读取输入字段的内容并从数据数组中删除这些项。您可以参考this堆栈溢出问题,了解如何编写onResult回调。
  3. JQuery tokeninput的完整文档是here