ruby Rails中的参数数量错误(给定2,预期1)

sycxhyv7  于 4个月前  发布在  Ruby
关注(0)|答案(1)|浏览(47)
module ApplicationHelper
  def t(*a)
    translate(*a)
  end
end

字符串

情况1:-t('views.home.welcome_updated', default: 'Updated') =>获取错误:(参数数量错误(给定2,预期1))
情况2:-t('views.welcome') =>工作正常

Ruby Version: 3.0.6
Rails Version: 6.1.7.6


上面的代码有什么问题?
在ruby 2.7中,case 1和case 2都可以正常工作。在ruby版本升级到3后,我遇到了错误。
自定义t方法,

module ApplicationHelper
  def t(key, **options)
    args = [key]
    args.push options if options.present?
    translate(*a)
  end
end


但这也是行不通的

wd2eg0qa

wd2eg0qa1#

当你想转发所有参数时,不管它们的结构如何,你可以使用... syntax,像这样:

module ApplicationHelper
  def t(...)
    translate(...)
  end
end

字符串
或者,当不需要在转发到原始方法之前操作参数,或者在返回之前对响应进行操作时,可以像这样给方法名称别名:

alias_method :t, :translate

相关问题