Как я могу создать подкласс в обуви? - PullRequest
0 голосов
/ 17 апреля 2009

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

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

1 Ответ

2 голосов
/ 18 апреля 2009

Дай угадаю, ты пытаешься сделать что-то вроде этого:

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

...