Jquery + Rails 3 + плагин TokenInput + PrePopulate
Я использую плагин 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://stackru.com/q/5892326/489018
ОБНОВЛЕНИЕ: теперь я использую тот же метод, что и в http://railscasts.com/episodes/258-token-fields?view=asciicast Я использую data-pre to и получаю идентификатор формата 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"
});
Теперь моя проблема в том, что она ничего не наполняет. Все остальное работает просто отлично.
Благодарю. Дайте мне знать, если вам нужна дополнительная информация.
1 ответ
Уже поздно, но я столкнулся с точной проблемой. Ошибка в вызове text_field_tag.
text_field_tag(name, value = nil, options = {})
Как видите, вторым параметром является значение для text_field
и третий это options
пары. Вам нужно пройти nil
как value
чтобы data-pre
передается как option
,
<%= text_field_tag :project_tags, nil, "data-pre" => @list1.to_json %>
Если вы не передадите value
, это займет data-pre
в качестве значения для text_field