Как я могу создать подкласс в обуви?

Это простая тестовая программа Ruby Shoes, о которой я говорю: когда я пытаюсь использовать синтаксис подкласса, например class Hello < Shoes, и запускаю свою программу, она жалуется на «undefined method para» или «undefined method stack». Очевидно, что он не может создать подкласс Shoes, следовательно, ничего не знает о методах para или stack. Однако он работает нормально, когда я передаю его как блок в Shoes.app, например Shoes app do.....

В чем может быть проблема?


person Community    schedule 17.04.2009    source источник


Ответы (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

Конечно, это не работает. 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 после определения вашего класса, и все готово.

person Pesto    schedule 17.04.2009
comment
Вот и все. Спасибо за объяснение. Я знаю, что, должно быть, делаю что-то глупое. В примере из книги «Никто не знает обувь» он говорит об использовании метода url при разделении приложения на несколько страниц, но я не был уверен, нужно ли мне использовать метод url в очень простом примере, таком как мой. Похоже, мне придется в любое время создать подкласс класса Shoes (и использовать такие методы, как para, stack и т. Д.). - person ; 18.04.2009