Ruby - 可选参数错误匹配

时间:2016-10-31 15:30:12

标签: ruby-on-rails ruby

我有一个带有以下签名的ruby函数:

def botao_adicionar(model, prefix = "/#{model.name.tableize}", callback = nil)

我希望在不传递prefix参数的情况下进行调用,因此它采用我在上面定义的函数的默认值。所以我这样称呼它:

botao_adicionar(model=ArrendamentoContrato, callback="bind_unidades_consumidoras()")

它将callback值与prefix变量相关联。我相信它是按参数的顺序匹配的,但是我明确地在函数调用中调用了参数的名称......这不应该起作用吗?谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用关键字参数:

def botao_adicionar(model, prefix: "/#{model.name.tableize}", callback: nil)
end

用法:

botao_adicionar(ArrendamentoContrato, callback: "bind_unidades_consumidoras()")

答案 1 :(得分:1)

你所有的论点都是位置的。这意味着您无法按名称分配它们。

您似乎想要使用关键字参数。它们的正确语法是:

def botao_adicionar(model, prefix: "/#{model.name.tableize}", callback: nil)

然后

botao_adicionar(ArrendamentoContrato, callback: "bind_unidades_consumidoras()")