我有一个类的哈希。
$sites = Hash["cat", Cat.new, "dog", Dog.new]
Dog
有一个被调用的函数gmailOpen
,它返回一个哈希值。
class Dog
def gmailOpen(foo)
puts "it totally reaches this point"
return Hash["from",foo]
end
end
我用一种奇怪的方式称呼它。哪个正常工作:
result = eval("$sites['dog'].gmailOpen(1)")
但是当我作为 Sinatra 获取请求的结果调用它时,它会在返回语句中中断,WebBrick 告诉我您不能将数组转换为字符串:Internal Server Error: can't convert Array into String
class Controller < Sinatra::Base
get '/hello/:id' do
result = eval("$sites['dog'].gmailOpen(1)")
end
end
如果我返回一个字符串或一个 int,它不会中断,尽管当我尝试返回一个数组时它会中断。
在 Sinatra 中,如果我不通过我的类哈希调用它或者我在没有eval()
.
d = Dog.new
result = eval("d.gmailOpen(1)")
result = $sites['dog'].gmailOpen(1)
为什么我不能返回哈希?
eval()
注意:如果需要,我可以解释我的使用。现在,请假设这是绝对必要的。