Ruby Blocksyntaxfehler [duplizieren]

8

Ich bin mir nicht sicher, ob ich diesen Syntaxfehler verstehe. Ich verwende Carrierwave, um einige Datei-Uploads in einer Rails-App zu verwalten, und ich scheine einen Block falsch an eine der Methoden zu übergeben.

Hier ist das Beispiel in der Carrierwave-Dokumentation :

%Vor%

Folgendes habe ich:

%Vor%

Das obige funktioniert nicht, ich bekomme syntax error, unexpected '}', expecting keyword_end . Interessanterweise funktioniert Folgendes perfekt:

%Vor%

Also, meine Frage ist, warum kann ich einen Block übergeben mit do...end , aber keine Klammern in dieser Instanz?

Danke!

    
Andrew 28.07.2011, 04:58
quelle

1 Antwort

14

Versuchen Sie Folgendes:

%Vor%

Sie haben ein Vorrangproblem. Der { } -Block bindet enger als ein do...end -Block und enger als ein Methodenaufruf; Das Ergebnis ist, dass Ruby denkt, dass Sie versuchen, einen Block als Argument für ein Symbol zu liefern und sagt nein.

Sie können ein klareres (?) oder möglicherweise besser bekanntes Beispiel sehen, indem Sie Folgendes vergleichen:

%Vor%     
mu is too short 28.07.2011, 05:08
quelle