Я использую плагин 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
ОБНОВЛЕНИЕ: теперь я использую тот же метод, что и в 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 — это массив в формате id и name, пример вывода @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"
});
Теперь моя проблема в том, что он ничего не заполняет заранее. Все остальное работает нормально.
Спасибо. Дайте мне знать, если вам нужна дополнительная информация.
@testers
его атрибуты в виде карты, возвращает коллекцию всех карт. Вы должны заменить его своим конкретным кодом, особенно там, гдеname
. Что-то вроде:@testers.map {|t| { m = Map.new; m[:id] => t.id; m[:name] => t.name; m }
гдеname
— это метод, возвращающий имя тестера. - person mliebelt   schedule 29.12.2011