Я использую плагин tokeninput (http://loopj.com/jquery-tokeninput/demo.html) для автозаполнения нескольких тегов, и он отлично работает в New
форме.
Теперь я хочу предварительно заполнить то же самое в форме редактирования; Вот где я испытываю трудности. Я создал один файл, который возвращает значения в формате JSON (идентификатор и имя). И если я скопирую эти результаты из журнала сервера и добавлю его в prePopulate для плагина tokeninput, он будет работать нормально.
Но когда мне это нравится
prePopulate: k.getJSON("tag_list_pre")
где tag_list_pre
- это действие, которое возвращает выбранные теги в формате json.
Если я предупрежу
alert(getJSON("tag_list_pre"));
возвращает [object Object]
и ничего не заполняет.
Я думаю, что проблема заключается в том, что когда мой файл возвращает данные в формате json и с этой стороны в представлении он не получает желаемых результатов.
Аналогичная проблема задана в этом вопросе, но еще не получена https://stackoverflow.com/q/5892326/489018
UPDATE:
Я сейчас использую тот же метод, что и в http://railscasts.com/episodes/258-token-fields?view=asciicast
Я использую data-pre для получения идентификатора формата json и строки имени, как того требует ввод токена.
Пример вывода:
[{"id":"5","name":"payment-processing"},{"id":"8","name":"asd"},{"id":"15","name":"java"}]
Теперь мой текстовый тег HTML выглядит примерно так.
<%= text_field_tag :project_tags, "data-pre" => @list1.to_json %>
, где list1 - это массив в формате идентификатора и имени. Пример вывода @ list1 выглядит следующим образом.
[{:id=>"5", :name=>"payment-processing"}, {:id=>"8", :name=>"asd"}, {:id=>"15", :name=>"java"}]
и новый tokenInput выглядит так:
k("#project_tags").tokenInput("tag_list", {
prePopulate: k("#project_tags", k(this)).data("pre"),
hintText: "Enter Tags for your Project",
noResultsText: "No Such Tags",
searchingText: "Looking for your Tags",
preventDuplicates: true,
theme: "facebook"
});
Теперь моя проблема в том, что она ничего не заполняет. Все остальное работает просто отлично.
Спасибо. Дайте мне знать, если вам нужна дополнительная информация.