Rails の引数の数が間違っています (2 が指定され、1 が予期されています)
概要
module ApplicationHelper
def t(*a)
translate(*a)
end
end
ケース 1 :- t(‘views.home.welcome_updated’、デフォルト: ‘Updated’) => エラーの取得: (引数の数が間違っています (2 が指定され、1 が期待されます))
ケース 2 :- t(‘views.welcome’) => 正常に動作
Ruby Version: 3.0.6
Rails Version: 6.1.7.6
上記のコードの何が問題なのでしょうか?
ケース 1 と 2 はどちらも Ruby 2.7 では正常に動作します。 Rubyのバージョンを3にアップグレードしたらエラーが発生しました
t メソッドを次のようにカスタマイズします
module ApplicationHelper
def t(key, **options)
args = [key]
args.push options if options.present?
translate(*a)
end
end
しかし、これも機能しません
解決策
構造に関係なく、すべての引数を転送したい場合は、次のように … 構文を使用できます。
module ApplicationHelper
def t(...)
translate(...)
end
end
または、元のメソッドに転送する前に引数を操作したり、戻る前に応答に作用したりする必要がない場合は、次のようにメソッド名にエイリアスを付けることができます。
alias_method :t, :translate