0

这是我正在谈论的一个简单的测试 Ruby Shoes 程序:当我尝试使用子类语法时,喜欢class Hello < Shoes并运行我的程序,它会抱怨“未定义的方法参数”或“未定义的方法堆栈”。显然它不能继承鞋类,因此对“para”或“stack”方法一无所知。但是,当我将它作为一个块传递给 Shoes.app 时,它运行良好,例如Shoes app do.....

可能是什么问题呢?

4

1 回答 1

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

好吧,这当然行不通。 para, stack,subtitle等都是实例方法,但您试图将它们称为类方法。它们必须在实例方法中,如下所示:

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它的朋友不同,它实际上是一个类方法)。它设置默认 url 来调用该pony_list方法。请记住,您必须在类定义之后调用 Shoes.app 并且一切就绪。

于 2009-04-17T21:06:31.307 回答