Я работаю над плагином, который будет присваивать тег по умолчанию новым темам, создаваемым в категории.
Приведённый ниже код «работает», если я ввожу имена тегов, разделённые символом «|», то есть «tag1|tag2» срабатывает. (Едва могу в это поверить! Но я отвлекаюсь.)
<h3>{{i18n 'topic_default_tag.title'}}</h3>
<section class='field default-tag'>
<div class="default-tag">
<label>
{{input type="list" value=category.custom_fields.default_tag }}
{{popup-input-tip validation=tagValidation}}
{{i18n 'topic_default_tag.default_tag'}}
</label>
</div>
</section>
Теперь я хотел бы иметь полноценный селектор тегов вместо невалидированной строки. Казалось бы, следующий вариант должен сработать:
<h3>{{i18n 'topic_default_tag.title'}}</h3>
<section class='field default-tag'>
<div class="default-tag">
<label>
{{tag-chooser tags=category.custom_fields.default_tag tabindex="4" categoryId=category.id}}
{{popup-input-tip validation=tagValidation}}
{{i18n 'topic_default_tag.default_tag'}}
</label>
</div>
</section>
Но этого не происходит. Суть моей проблемы в том, что я почти не понимаю, как работает магия этих Handlebars. Например, я предполагаю, что первый вариант работает, потому что он каким-то чудом получает имя поля из default-tag в <section class='field default-tag'>, но это была просто удача. ![]()
Когда я использую tag-chooser, теги передаются в Rails как массив, который он отбрасывает, прежде чем я успеваю преобразовать их в строку с разделителем | для записи в CategoryCustomField. С {{input type=list...}} я могу сам ввести строку с разделителем |, и всё работает отлично. Нужно ли мне какое-то «магическое» решение Ember для преобразования массива в строку на стороне Ember?
Возможно, мне стоит сделать что-то вроде What's the best approach to access category specific settings??
EDIT: Чтобы добавлять теги до вызова вебхука, используйте after_create вместо DiscourseEvent.on(:post_created). Rails теперь в целом понятен, но с Ember, JavaScript и CSS у меня всё ещё возникают трудности.