2016-10-31 4 views
0

ich eine rubin Funktion mit der folgenden Signatur:Rubin - optionales Argument falsch Spiel

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

und ich möchte es einen Anruf tätigen, ohne das prefix Argument übergeben, so dass es den Standard-aus-Funktion nimmt, die ich definierte über. So nenne ich es auf diese Weise:

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

Und es verbindet den callback Wert prefix Variable. Ich glaube, es entspricht der Reihenfolge der Argumente, aber ich habe explizit den Namen des Arguments im Funktionsaufruf aufgerufen ... das sollte nicht funktionieren? Vielen Dank!

Antwort

1

Alle Ihre Argumente Positions sind. Das bedeutet, dass Sie sie nicht mit Namen zuweisen können.

Es scheint, dass Sie Schlüsselwortargumente verwenden möchten. Die korrekte Syntax für sie ist dies:

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

Und dann

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

Danke! Genau das meine ich ... wusste nicht, dass es Syntaxfehler war. Vielen Dank! –

+0

@RonanLopes: Es ist kein Syntaxfehler. Nur unzureichende Syntax für das, was Sie versucht haben :) –

1

können Sie Keyword-Argumente verwenden:

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

Verbrauch:

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

Fast, aber nicht ganz :) –

+0

@SergioTulentsev mit 'Modell 'es war ein Tippfehler - thx für :) –

+0

bemerkt Ja, Recht . –

Verwandte Themen