标签: ruby sinatra erb
我想这样做:
get '/test' do @dog = 'WOOF' erb :test sleep(1) @dog = 'BOWWOW' erb :test sleep(1) @dog = 'ARF' erb :test end
是否可以在客户端看到每次更新时执行此类操作,我已尝试但无法使其正常工作。
答案 0 :(得分:3)
简而言之:不。
我认为你对HTTP的运作方式感到困惑。首先,HTTP是stateless。这意味着多个请求对彼此一无所知(这可以通过cookie使用会话来缓解,或者可能是HTTP基本身份验证)。
此外,您无法像正在执行的那样重新发送HTTP正文。一旦发送,就不会再回头了。诸如长轮询延迟发送身体以便他们可以随时发送它的技术,但是一旦他们发送了一些请求就完成了,并且必须启动新的请求。因此,一旦你通过erb渲染了一次,你的请求就完成了。
erb
您尝试实现的目标只能通过AJAX的Javascript或完全独立的整页请求来完成。