无法在select2上选择json-results

时间:2015-09-21 14:14:25

标签: javascript json jquery-select2 jquery-select2-4 select2-rails

让JS喜欢:

$(".select2-input").select2({
        placeholder: placeholder,
        id: function(data){return data.id},
        ajax: {
            url: "/autocomplete",
            datatype: 'json',
            data: function (params) {
                return {
                    q: params.term, // search term
                    page: params.page
                };
            },
            results: function (data) {
                return {
                    results: data.results
                };
            },
            cache: true,
            id: function(connection){
                console.log(connection);
            }
        }
    });

和“/ autocomplete”网址的结果如下:

{"results":[{"id":14953,"text":"Dohn Doe"},{"id":15467,"text":"Jane Dohe"}]}

通过所有这些,我可以看到自动填充结果,但点击任何结果都不会导致任何变化!

所以我一直试图从this question实施答案,但没有运气。可能我只是错过了/搞砸了什么。

也是这一行

console.log(connection);

没有向控制台写任何内容。

Select2版本为4.0

1 个答案:

答案 0 :(得分:0)

好吧,好像我发现了问题。首先需要说的是,版本4.0中的select2不支持上面提到的id选项。这是documentation的摘录来证明它:

  

Select2不再支持要使用的自定义ID或文本,但提供了将错误数据转换为预期格式的集成点。

所以问题不在我提供的代码中(除了dataType类型,感谢Dave Newton!),但在我没有提供的代码中。所以我有

input :person, as: :text, input_html: { class: "select2-input", "data-placeholder" => person }

- 注意as: :text部分

一旦我将其更改为

input :person, as: :select, input_html: { class: "select2-input", "data-placeholder" => person }
一切都像魅力一样!仍然不知道是什么驱使我把文字输入而不是选择。