こんにちは!現在、多言語プラグインに取り組んでおり、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 も未定義のローカル変数であると言われます。
何かアドバイスはありますか?よろしくお願いします!