gpt4 book ai didi

ruby-on-rails - 仅具有命名参数的方法中的 ArgumentError

转载 作者:太空宇宙 更新时间:2023-11-03 17:29:47 26 4
gpt4 key购买 nike

我有一个只有命名参数的方法很奇怪的行为。

class MyConsumer < ...

def method1(params)

method2(params.slice(:a,:b))
end

def method2(a:, b:)
# do something
end

end

我有针对 method1 的测试并且工作正常。但是在生产中我得到 ArgumentError: wrong number of arguments (given 1, expected 0) 异常。

我尝试添加

params = params[0] if params.instance_of?(Array)

作为 method1 的第一行,认为它是用数组而不是哈希调用的,但这没有帮助。

关于为什么使用 hash.slice 调用 method2 在某些情况下有效而在其他情况下无效的任何见解?

最佳答案

ActionController::Parameters#slice返回一个 ActionController::Parameters 实例,而不是哈希。它像散列一样嘎嘎作响,但它不是散列,因此它不能按原样传递给该方法,期待双拼。

明确调用to_hash在他们通过之前:

method2(params.permit(:a,:b).to_hash) 

请检查下面的评论,了解为什么它是permit,而不是slice。感谢@SimpleLime。

关于ruby-on-rails - 仅具有命名参数的方法中的 ArgumentError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45343416/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com