أعمل على إضافة (plugin) ستقوم بتعيين وسم افتراضي للمواضيع الجديدة التي تُنشأ في فئة معينة.
الكود أدناه “يعمل” إذا أدخلت أسماء الوسوم مفصولة بـ “|”، لذا فإن “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>
ما أريده الآن هو وجود مُختار وسوم (tag selector) مناسب بدلاً من سلسلة غير مُتحقق منها. يبدو أن الكود التالي يجب أن يعمل:
<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؟
ربما أحتاج إلى فعل شيء مشابه لـ https://meta.discourse.org/t/whats-the-best-approach-to-access-category-specific-settings/40728؟
تعديل: لإضافة الوسوم قبل استدعاء الويب هوك (webhook)، استخدم after_create بدلاً من DiscourseEvent.on(:post_created). Rails أصبحت مفهومة لي إلى حد كبير الآن، لكن Ember وJavascript وCSS لا تزال غير واضحة بالنسبة لي.