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

Другие вопросы по тегам