Действует как Taggable при отображении идентификатора вместо имени
У меня 2 модели, студент и профиль. Студент может иметь только один профиль. Я установил acts_as_taggable_on :skills
в профильной модели.
В частичной форме для нового и редактируемого действия профиля у меня есть строка кода для добавления навыков (я использую библиотеку select2 с классом taggable):
# apps/views/profiles/_form.html.erb
<%= f.input :skill_list, input_html: { class: 'taggable', multiple: "multiple" }, collection: Profile.tag_counts_on(:skills) %>
И тогда в контроллере шоу студентов я нахожу студента:
@student = Student.find(params[:id])
В шоу студенческого взгляда я могу иметь такие:
<%= @student.profile.skill_list %>
Я попытался запустить приложение, я создал новую учетную запись студента, затем создал новый профиль, добавил навыки (на данный момент форма навыков не будет отображаться, потому что у нас еще не было тега навыков), я нажал кнопку Сохранить и это сработало. Список с именем навыка появился на странице показа ученика.
Затем я создал другую учетную запись студента и создал новый профиль для студента. К настоящему времени форма навыков показывает все теги навыков, которые я поместил в предыдущем профиле. Таким образом, я могу выполнить автозаполнение, выбрав доступную метку навыков, а затем нажав "Сохранить"
Однако в представлении студенческого шоу я вижу только список идентификаторов навыков, а не список названий навыков, как ожидалось.
Что я упустил?
1 ответ
Я прочитал это, как получить список всех тегов, используя гем 'actions-as-taggable-on' в Rails (не в счетчиках), и использую этот код в коллекции (частичная форма):
ActsAsTaggableOn::Tagging.includes(:tag).where(context: 'skills').uniq.pluck(:name)
и это работает. Он сохранит имя, а не идентификатор и может быть доступен для другого профиля.