2009-04-17 6 views
0

Ceci est un test simple Ruby Shoes Je parle de: Quand j'essaie d'utiliser la syntaxe de la sous-classe, comme class Hello < Shoes et que j'exécute mon programme, il me plait 'méthode non définie' ou 'pile de méthodes non définie'. Évidemment, il n'est pas capable de sous-classer les chaussures, donc ne sait rien sur les méthodes 'para' ou 'stack'. Cependant, il fonctionne bien, quand je le passe comme un bloc à Shoes.app, comme Shoes app do.....Comment puis-je sous-classe dans Chaussures?

Quel pourrait être le problème?

Répondre

2

Laissez-moi deviner, vous essayez de faire quelque chose comme ceci:

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 

Mais bien sûr, cela ne fonctionne pas. para, stack, subtitle, et ainsi de suite sont toutes les méthodes d'instance, mais vous essayez de les appeler comme méthodes de classe. Ils doivent être à l'intérieur d'une méthode d'instance, comme ceci:

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 

Voyez comment ce genre de choses est dans la méthode pony_list maintenant? Bien sûr, nous devons faire une instance appeler la méthode. Comment peut-on faire ça? C'est pourquoi nous appelons la méthode url (qui, contrairement à para et ses amis, est en fait une méthode de classe). Il définit l'URL par défaut pour appeler la méthode pony_list. Rappelez-vous que vous devez appeler Shoes.app après votre définition de classe et vous êtes tous ensemble.

+0

C'était tout. Merci pour l'explication. Je sais que je dois faire quelque chose de stupide. Dans l'exemple du livre 'Nobody Knows Shoes', il parle de l'utilisation de la méthode url lors de la division de l'application en plusieurs pages, mais je ne savais pas si je devais utiliser la méthode url dans un exemple très simple, comme le mien. On dirait que je devrai, chaque fois que je veux sous-classer la classe Shoes (et utiliser des méthodes comme para, pile etc). –

Questions connexes