_
なぜ彼自身がこの問題に答えたのか、それについてはすぐに説明します。まず、異なる URL 間でデータ (具体的には文字列) を渡す最も簡単な方法は次のとおりです。
class MyShoe < Shoes
url '/', :index
url '/somewhere/(\d+)', :somewhere
def index
@var = para link( "What is 2 + 2?", :click => "/somewhere/4" )
end
def somewhere(value)
para "2 + 2 = #{value}"
end
end
Shoes.app
正規表現のサブグループに一致し、一致する文字列をパラメーターとしてメソッドに渡します。たまには便利ですが、急ぐと扱いにくくなります。他の解決策は、定数またはクラス変数を使用することです。その_
理由は次のとおりです。
OK、さらにいじってみると、すべてのインスタンス変数が取得されるように見えます
Shoes サブクラス内のすべてのメソッドの先頭で消去されます。
それは大丈夫だと思います。
では、ある靴の URL から別の靴の URL にデータを共有するには、どのような方法が望ましいでしょうか?
文字列の場合、URL 自体で1 つのページから次のページに渡すことができます。文字列でない場合
、何を使用する必要がありますか -- @@class_variables?
確かに、クラス変数を使用できます。これらは、アプリの存続期間を通じて保持されることが保証されています。または定数。
また、ShoesにはSQLite3が付属しており、そこにデータを渡すことができます。
あなたの例では、次のようになります。
class MyShoe < Shoes
url '/', :index
url '/somewhere', :somewhere
def index
@@var = para link( "go somewhere", :click => "/somewhere" )
end
def somewhere
para "var = #{@@var.inspect}"
end
end
Shoes.app