Отображение формы при объединении самоцвета действует как тег с включенным плагином 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>
для вас, но они должны быть в форме, чтобы представить их.