Отображение формы при объединении самоцвета действует как тег с включенным плагином jquery tag-it

Что ж, я могу успешно хранить теги, определенные пользователями, при регистрации их профиля с помощью activ_as_taggable gem. Проблема заключается в их отображении и обновлении. Для отображения я использовал плагин jquery tag-it.

Теперь гем предоставляет все теги как одну строку с пробелами между ними в форме, в то время как плагин требует их в упорядоченном списке, так что все теги могут отображаться отдельно.

Код моего просмотра:

Если я использую<%= f.text_field :intersted_list, class: 'form-control', id: 'intersted' %>Все извлеченные теги отображаются в виде одного тега.

Если я использую:

<ul id="intersted"> <% resource.intersted_list.each do |tag| %> <li><%= tag %></li> <% end %> </ul>

все теги отображаются отдельно. Но тогда я не могу добавить или обновить их, так как они больше не остаются частью формы.

Javascript код:

$("#intersted").tagit();

Все указатели будут оценены.. Заранее спасибо..

2 ответа

Ну, я не смог найти систематического ответа на вопрос. Но с помощью ответа @ Макса я просто нашел патч к этому вопросу.

Я только что добавил атрибут значения в тег. т.е.

<%= f.text_field :intersted_list, class: 'form-control', id: 'intersted', value: resource.intersted_list.to_s.gsub!(' ',',') %>

даже если передать значение тегу излишне, он решил мой вопрос..

Я подозреваю, что с вашим кодом происходит что-то еще, так как я считаю, что у вас должно работать.

Tag-у него есть несколько разных способов, которыми вы можете создать виджет. Вы можете увидеть их несколько в источнике HTML по адресу https://aehlke.github.io/tag-it/examples.html. Обратите внимание, что страница, к сожалению, требует jQuery через ссылку, отличную от HTTPS, поэтому вам, возможно, придется отключить защиту вашего браузера от включения активов HTTP на страницу HTTPS.

Самый быстрый способ с одним вводом состоит в том, чтобы значение поля представляло собой список через запятую, такой как <input name="tags" id="singleFieldTags2" value="Apple, Orange"> а затем просто запустить виджет без каких-либо опций: $('#singleFieldTags2').tagit(); Это опция "Одно поле ввода (2)" на странице примера. Если вам не удается правильно отобразить теги с помощью этой опции, похоже, что ваш ERB не генерирует правильный HTML (хотя выглядит так, как должен). Вы можете подтвердить, что вы можете заставить Tag-it правильно работать на вашей странице со статическим HTML с одной стороны, и что вы можете использовать Ruby/ERB для генерации правильного текстового поля с разделенными запятыми ключевыми словами (без Tag-it) с другой.

Ваш второй способ также должен работать, хотя вы должны убедиться, что он включен в <form> элемент; Tag-он будет генерировать <input>для вас, но они должны быть в форме, чтобы представить их.

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