0

これは、私が話している簡単なテスト Ruby Shoes プログラムです。サブクラスの構文を使用しようとするclass Hello < Shoesと、プログラムを実行すると、'undefined method para' または 'undefined method stack' というエラーが表示されます。明らかに、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

もちろん、これは機能しません。 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 を呼び出す必要があることを忘れないでください。これで準備は完了です。

于 2009-04-17T21:06:31.307 に答える