我怎样才能在Shoes中进行子类化?

时间:2009-04-17 18:23:48

标签: ruby subclass shoes

这是一个我正在讨论的简单测试Ruby Shoes程序:当我尝试使用子类语法时,如class Hello < Shoes并运行我的程序,它会抱怨'undefined method para'或'undefined method stack'。显然它无法继承Shoes,因此不知道'para'或'stack'方法的任何内容。但是当我将它作为一个块传递给Shoes.app时,它运行正常,就像Shoes app do....一样。

可能是什么问题?

1 个答案:

答案 0 :(得分:2)

让我猜一下,你正试图做这样的事情:

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

当然,这不起作用。 parastacksubtitle等都是实例方法,但您尝试将它们称为类方法。它们必须位于实例方法中,如下所示:

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

现在查看pony_list方法中的内容如何?当然,我们必须让实例调用该方法。我们怎么做?这就是我们调用url方法的原因(与para及其朋友不同,它实际上是一种类方法)。它设置默认网址以调用pony_list方法。请记住,您必须在课程定义之后调用Shoes.app并完成所有设置。