2009-04-17 6 views
0

Dies ist ein einfacher Test Ruby Shoes Programm Ich spreche über: Wenn ich versuche, die Unterklasse Syntax, wie class Hello < Shoes zu verwenden und mein Programm auszuführen, beschwert es "undefined Methode para" oder "undefined Methodenstapel". Offensichtlich ist es nicht möglich, Shoes abzuleiten, daher weiß man nichts über 'para' oder 'stack' Methoden. Allerdings läuft es einwandfrei, wenn ich es als Block an Shoes.app übergebe, wie Shoes app do.....Wie kann ich in Schuhe Unterklasse?

Was könnte das Problem sein?

Antwort

2

Lassen Sie mich raten, Sie versuchen, etwas zu tun:

class MyClass < Shoes 

    stack :width => 200 do 
    subtitle 'People who like ponies' 
    para 'TheTXI' 
    para 'Pesto' 
    para 'Einstein' 
    end 

    stack :width => -200 do 
    subtitle 'People who hate ponies' 
    para 'Hitler' 
    para 'Stalin' 
    para 'Einstein (He was bipolar)' 
    end 
end 

Nun natürlich das funktioniert nicht. para, stack, subtitle usw. sind alle Instanzmethoden, aber Sie versuchen, sie als Klassenmethoden zu bezeichnen. Sie haben innerhalb einer Instanz Methode sein, wie folgt aus:

class MyClass < Shoes 
    url '/', :pony_list 

    def pony_list 
    stack :width => 200 do 
     subtitle 'People who like ponies' 
     para 'TheTXI' 
     para 'Pesto' 
     para 'Einstein' 
     end 

     stack :width => -200 do 
     subtitle 'People who hate ponies' 
     para 'Hitler' 
     para 'Stalin' 
     para 'Einstein (He was bipolar)' 
     end 
    end 
    end 

    Shoes.app :width => 400 

Sehen Sie, wie das Zeug in der jetzt pony_list Methode? Natürlich müssen wir eine Instanz aufrufen, um die Methode aufzurufen. Wie können wir das machen? Deshalb rufen wir die Methode url auf (die im Gegensatz zu para und ihren Freunden tatsächlich eine Klassenmethode ist). Es legt die Standard-URL fest, um die Methode pony_list aufzurufen. Denken Sie daran, dass Sie Shoes.app nach Ihrer Klassendefinition aufrufen müssen und alles bereit ist.

+0

Das war es. Danke für die Erklärung. Ich weiß, ich muss etwas Dummes tun. In dem Beispiel im Buch "Nobody Knows Shoes" spricht er über die Verwendung der URL-Methode beim Teilen der App in mehrere Seiten, aber ich war mir nicht sicher, ob ich die URL-Methode in einem sehr einfachen Beispiel wie meiner verwenden muss. Sieht so aus, als müsste ich irgendwann die Shoes-Klasse ableiten (und Methoden wie para, stack usw. verwenden). –