مرحباً! أنا أعمل حاليًا على المكون الإضافي متعدد اللغات، وفي طريقة add_to_serializer، أرغب في استخدام وسيطات &block عن طريق توفير دالة لامدا، لتجنب تكرار التعليمات البرمجية، وتمرير الوسيطات إليها
corresponding_translation =
-> (object, scope, translated_field_type, uncategorized_field_name, default_object_used) {
if object.uncategorized?
I18n.t(uncategorized_field_name, locale: I18n.locale)
elsif !(object.slug_path && Multilingual::Translation.get(translated_field_type, default_object_used)).blank?
Multilingual::Translation.get(translated_field_type, default_object_used)[client_locale.call(scope).to_sym] || default_object_used
else
default_object_used
end
}
add_to_serializer(
:basic_category,
:name,
false,
&block = corresponding_translation.call(object, scope, "category_name", 'uncategorized', object.name)
)
ومع ذلك، عندما أحاول تشغيل Discourse، فإنه لا يبدأ ويعطيني بدلاً من ذلك هذا الخطأ، قائلاً إن object غير معرف كمتغير محلي، ومع ذلك أرغب في استخدام متغير Discourse وليس متغيرًا محليًا
<path to discourse>/plugin/discourse-multilingual/plugin.rb:228:in `block in activate!': undefined local variable or method `object' for #<Plugin::Instance:0x00007f3629ad0cf8 @assets=[["<path to discourse>/plugins/discourse-multilingual/assets/stylesheets/common/multilingual.scss", nil, "discourse-multilingual"], ["<path to discourse>/plugins/discourse-multilingual/assets/stylesheets/mobile/multilingual.scss", :mobile, "discourse-multilingual"]], @path="<path to discourse>/plugins/discourse-multilingual/plugin.rb", @enabled_site_setting=:multilingual_enabled, @directory_name="discourse-multilingual", @extra_js_file_path="<path to discourse>/app/assets/javascripts/plugins/discourse-multilingual_extra.js.erb", @color_schemes=[], @javascripts=[], @locales=[], @service_workers=[], @styles=[], @metadata=#<Plugin::Metadata:0x00007f3624f752e0 @name="discourse-multilingual", @about="Features to support multilingual forums", @version="0.2.9", @url="https://github.com/paviliondev/discourse-multilingual", @authors="Angus McLeod, Robert Barrow", @contact_emails="development@pavilion.tech">, @seed_data={}, @asset_filters=[], @idx=0, @initializers=[#<Proc:0x00007f362564b4c0 <path to discourse>/plugins/discourse-multilingual/plugin.rb:28>]> (NameError)
وعندما أقوم بإزالته للاختبار، فإنه يقول إن scope هو أيضًا متغير محلي غير معرف
هل لديك أي نصائح؟ شكراً مقدماً!