【发布时间】:2021-06-12 23:26:02
【问题描述】:
我正在升级到 Rails 6.1.3 以及最新版本的 rails-i18n (1.8.9)。
我曾经能够像这样传递插值参数的哈希:
I18n.with_locale(:en) do
message = I18n.translate("foo", message_args.merge({default: ""}))
end
但这现在引发了:
ArgumentError (wrong number of arguments (given 2, expected 0..1)):
将它们作为参数传递 as described 可以正常工作:
I18n.with_locale(:en) do
message = I18n.translate("foo", bar: "baz", default: "")
end
查看 gems translate 方法时,它似乎在版本之间发生了变化:
# 1.5.3
def translate(*args)
...
end
# 1.8.9
def translate(key = nil, throw: false, raise: false, locale: nil, **options)
...
end
谁知道我如何重新获得传递一组动态插值参数的能力?
【问题讨论】:
-
你尝试过双重splat运算符
**吗? -
如此接近,我尝试过单身。双 splat 有效。谢谢。如果你把它作为答案我会马上接受。
标签: ruby-on-rails ruby rails-i18n