将正确的参数传递给应用程序控制器



应用程序控制器方法需要两个参数generate_municipal_withins(municipal, radius),但在单独的控制器操作中,调用此方法会产生

ArgumentError (wrong number of arguments (given 1, expected 2)):

来自

@municipals.each do |municipal|
generate_municipal_withins(municipal: municipal, radius: 70)

我的假设是前者,因为如果将其修改为generate_municipal_withins(municipal: municipal, 70),则会产生相同的错误。

因此,集合的成员似乎没有作为参数传递。应该如何修复语法?

从方法定义中,它告诉该方法需要用两个参数调用,但您在中使用了一个散列

generate_municipal_withins(municipal: municipal, radius: 70)

执行method(municipal: municipal, radius: 70)method({municipal: municipal, radius: 70})相同,后者是作为散列的单个参数。

如果你的方法被定义为使用关键字参数,那么你可以使用问题中显示的版本,但为此方法应该写成:

generate_municipal_withins(municipal:, radius:)
...
end

尝试只通过municiapl70:

generate_municipal_withins(municipal, 70)

最新更新