来自 railscasts tokeninput 的相同条目列表

Same list of entries coming railscasts tokeninput

我正在使用 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 列表中有两个条目 asia 和 africa。将亚洲添加到输入字段后,再次单击该字段时,亚洲和非洲都会出现。

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

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

  1. 使用 preventDuplicates 选项,这样即使用户 select 多次从列表中选择相同的选项,它也只会添加一次。
  2. 使用回调 onResult 来操作响应数据。读取输入字段的内容并从数据数组中删除这些项目。你可以参考this stack overflow question 看如何写onResult callback.

JQuery 令牌输入的完整文档是 here