Использование действий как помечаемых в форме collection_select

#ruby-on-rails #acts-as-taggable-on

Вопрос:

У меня есть фильм-модель с тегами, использующими gem acts_as_taggable_on.

Я могу сделать это в форме: lt;%= форма.text_input :список тегов%gt;, и это работает — он показывает теги, связанные с фильмом, и я могу добавлять теги, разделенные запятыми, все нормально.

Теперь я пытаюсь использовать помощник по выбору коллекции_, и у меня было две идеи: использовать «:tag_id» в качестве первого параметра, который позволяет правильно ОТОБРАЖАТЬ теги, назначенные фильмам (как выбрано), но не обновленные, или использовать «:tag_list», который заставляет обновления тегов работать, но не отображаться…

 lt;%= form.collection_select(:tag_list, @all_tags, :id, :name, { }, { class: 'font-size-m', id: 'tag-select', multiple: true }) %gt;  

(Я определяю @all_tags в контроллере следующим образом):

 @all_tags = ActsAsTaggableOn::Tag.all  

Не уверен, как использовать collection_select с этими тегами… любая помощь будет признательна!

Комментарии:

1. = f.select(:tag_list, ActsAsTaggableOn::Tag.all.collect { |t| [t.name, t.name] }, {}, { multiple: true }) должно сработать. Дайте мне знать, если нет

2. Да, сработало. Я также обнаружил другую проблему в разрешенных параметрах для фильмов — я не должен включать :tag_list, но tag_list: [] в качестве параметра, иначе это не сработало! но теперь все решено, спасибо.

Ответ №1:

Проблема на самом деле заключалась в том, что я использовал :tag_list в качестве разрешенного параметра, а не tag_list: []. Оказывается, в зависимости от того, как вы используете действия как помечаемые, вы либо имеете дело со строкой (со значениями, разделенными запятыми), либо с массивом. Я все еще не совсем уверен, как именно это работает, но — всякий раз, когда теги не сохраняются сейчас во время моей разработки, я сначала пытаюсь переключить разрешенные параметры 🙂