我确定这与鞋子中提到的错综复杂有关>手册>规则,但我只是不明白。如果有人愿意在下面的代码中解释为什么@var == nil ... 我以为我可以使用访问在我的应用程序中的不同视图之间切换,但如果我失去所有状态,这将无效。
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
答案 0 :(得分:2)
_
为什么他自己已经回答了这个问题,我会在一分钟内做到这一点。首先,在不同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
它将匹配正则表达式的子组,并将匹配的字符串作为参数传递给方法。偶尔有用,但匆忙变得笨拙。另一种解决方案是使用常量或类变量,如_
why explains here:
好的,所以进一步愚弄它看起来像所有实例变量
在Shoes子类中的每个方法的开头擦除 我猜是的。那么什么是获得一些数据的首选方式 这是从一个鞋子URL到另一个鞋子的URL?从一页传递它 到URL中的下一个工作 - 如果它是一个字符串。如果不是 一个字符串,你应该使用什么 - @@ class_variables?
当然可以使用类var。那些 保证始终存在 应用程序的生命。或者是常数。
此外,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