Bonjour ! Je travaille actuellement sur le plugin multilingue, et dans la méthode add_to_serializer, je souhaite utiliser les arguments &block en donnant une lambda, pour éviter la redondance de code, et pour y passer des arguments.
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)
)
Cependant, lorsque j’essaie de lancer Discourse, il ne démarre pas et me donne cette erreur, disant que object est une variable locale indéfinie, alors que je souhaite utiliser la variable Discourse et non une variable locale.
<chemin vers discourse>/plugin/discourse-multilingual/plugin.rb:228:in `block in activate!': undefined local variable or method `object' for #<Plugin::Instance:0x00007f3629ad0cf8 @assets=[["<chemin vers discourse>/plugins/discourse-multilingual/assets/stylesheets/common/multilingual.scss", nil, "discourse-multilingual"], ["<chemin vers discourse>/plugins/discourse-multilingual/assets/stylesheets/mobile/multilingual.scss", :mobile, "discourse-multilingual"]], @path="<chemin vers discourse>/plugins/discourse-multilingual/plugin.rb", @enabled_site_setting=:multilingual_enabled, @directory_name="discourse-multilingual", @extra_js_file_path="<chemin vers 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 <chemin vers discourse>/plugins/discourse-multilingual/plugin.rb:28>]> (NameError)
Et quand je le supprime pour tester, il dit que scope est également une variable locale indéfinie.
Avez-vous des conseils ? Merci d’avance !