عرض سلام و ادب خدمت استاد محترم و دوستان عزیز؛ خواستم عرض کنم خدمت شما اینکه در قسمت بروزرسانی , استاد فرمودن که وقتی روی هر پستی کلیک میکنیم و وارد صفحه ویرایش که شدیم در قسمت نام نویسنده , نام نویسنده اون پست هم توی منوی dropdown مون بصورت پیش فرض نمایش داده بشه ( یعنی بطور پیش فرض روی اولین گزینه نباشه ) تا متوجه بشیم نویسنده پست چه کسی بوده و در عین حال بتونیم از لیست نویسندهها یکیو انتخاب کنیم و در نهایت ذخیره ویرایش کنیم . من برای این مسئله یه راه حل پیدا کردم و گفتم با شما به اشتراک بزارم , اونم استفاده از Helperها بود , به این شکل که در مرحله اول وارد فایل index در پوشه bootstrap شوید (همونجایی که Handelbars تون رو پیکربندی کردید) و داخل اون متغییر hbs که نوشته بودیم یه helper به این صورت بنویسید
const hbs = expressHandleBars.create({
defaultLayout: "main",
layoutsDir: `${__dirname}../../views/admin/layout`,
helpers: {
select: function (value, options) {
return options
.fn(this)
.split("\n")
.map(function (v) {
var t = 'value="' + value + '"';
return !RegExp(t).test(v)
? v
: v.replace(t, t + ' selected="selected"');
})
.join("\n");
},
},
});
این helper ی که نوشتم یه مقدار ورودی میگیره و میاد اون مقدار ورودی رو با تمامی value ی optionهای موجود در select تطابق میده اون optionی که valueش مطابق مقدار ورودی باشه رو بهش خاصیت selected میده و درنهایت به عنوان گزینه پیش فرض درنظر میگیره . من نامش رو چون مربوط به select میشد گذاشتم select شما هر نامی که دوست داشتید بزارید براش , حالا داخل editPost.handlebars تون (همون صفحه ی مربوط به ویرایش پست) توی اون قسمت مربوط به نام نویسندهها این رو مینویسیم
<select name="author" id="author">
{{#select post.author_id}}
{{#each users}}
<option value="{{this.id}}" >{{this.full_name}}</option>
{{/each}}
{{/select}}
</select>
توی این قسمت هم اومدم select رو (نام همون helper ی ایجادش کردم ) برابر با شناسه نویسنده قرار دادم تا وقتی کاربر روی هرپستی که گزینه ویرایش رو زد وقتی که وارد صفحه ویرایش بشه نام نویسنده اون پست توی منو بصورت پیش فرض نمایش داده بشه و در عین حال اون حلقه each رو گذاشتم تا از منوی موجود به تمامی نویسندهها دسترسی داشته باشه . امیدوارم براتون مفید و کاربردی باشه . حالا دوستان شما هم بیایید کد مربوط به وضعیت مطلب رو بنویسید و با بقیه به اشتراک بزارید. ممنون از همگی