2012-02-29 3 views
0

Я хочу, чтобы это сделать:Рубин Синатра: Могу ли я обновить шаблон отображения несколько раз в течение запроса один клиента

get '/test' do 
    @dog = 'WOOF' 
    erb :test 
    sleep(1) 
    @dog = 'BOWWOW' 
    erb :test 
    sleep(1) 
    @dog = 'ARF' 
    erb :test 
    end 

Можно ли сделать что-то вроде этого, когда клиент видит каждое обновление или нет, я вы пытались, но не можете заставить его работать.

+0

Что именно вы пытаетесь достичь? –

+0

@Andrew Marshall Я пытаюсь отобразить представление несколько раз в течение одного запроса на получение. Практическая цель заключается в игре с шашками, которую я создаю там, где мне нужно разработать способ для режима одного игрока для обработки запроса на перемещение игрока, а затем обработать ход ИИ до конца запроса. То, что я хотел бы сделать, - показать представление после перемещения игрока, обработать движение ИИ, а затем снова отобразить представление. Дело в том, что мой код зависит от клиентских запросов на перемещение игры. Я несколько уверен, что ИИ не может генерировать запрос сам, поэтому игровой поток застревает. Извините за долгую реакцию –

ответ

3

Вкратце: нет.

Я думаю, вы сбиваете с толку, как работает HTTP. Во-первых, HTTP stateless. Это означает, что несколько запросов ничего не знают друг о друге (это смягчается с помощью сеансов с помощью файлов cookie или, возможно, HTTP basic auth).

Кроме того, вы не можете повторно отправить тело HTTP, как вы делаете. Как только он отправлен, нет возврата. Такие методы, как длительный опрос, отправляют тело, чтобы они могли отправлять его, когда захотят, но как только они отправляют что-то, запрос завершен, и нужно запустить новый. Таким образом, после того, как вы обработали тело один раз через erb, вы получите запрос.

Похоже, что вы пытаетесь достичь, это можно сделать только с помощью Javascript с помощью AJAX или с полностью отдельными полностраничными запросами.