【问题标题】:How can I subclass in Shoes?我如何在鞋类中进行子类化?
【发布时间】:2009-04-17 18:23:48
【问题描述】:

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

可能是什么问题?

【问题讨论】:

    标签: ruby subclass shoes


    【解决方案1】:

    让我猜猜,你正在尝试做这样的事情:

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

    【讨论】:

    • 就是这样。感谢您的解释。我知道我一定是在做一些愚蠢的事情。在“Nobody Knows Shoes”一书中的示例中,他谈到了在将应用程序拆分为多个页面时使用 url 方法,但我不确定是否需要在非常简单的示例中使用 url 方法,例如我的。看起来我必须在任何时候将 Shoes 类子类化(并使用 para、stack 等方法)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    • 2016-02-20
    相关资源
    最近更新 更多