Моему приложению Rails нужно каждую минуту получать обновленный счетчик с сервера.
Я пытаюсь, чтобы таймер javascript перезагрузил определенный div, где я отображаю этот счетчик.
<%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js", "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js", "application", "refresh-timer" %>
В конце вы заметите, что я включаю свой файл refresh-timer.js, который представляет собой всего один вызов:
$(document).ready( function(){
setInterval(function(){ $('refreshable').load('/refreshable'); }, 3000);})
Этот «обновляемый» объект соответствует этому в моем представлении status.html.erb:
<div class="main">
<div id="refreshable">
<%= render :partial => 'refreshable' %>
</div>
Да, есть еще кое-что в "основном" div, но интерес представляет обновление # div.
Так как javascript загружается / обновляется, в моем маршрутах .rb я создал соответствие:
match "refreshable" => "events#refreshable"
Хотя я сомневаюсь, что это абсолютно правильно, я пытаюсь упростить вещи, чтобы выяснить, почему таймер javascript не вызывает действие.
Для проверки того, что мой jQuery был настроен правильно, я заменил внутреннюю часть функции setInterval вызовом оповещения. Это работало нормально: каждые три секунды появлялось предупреждение.
Я также исследовал страницу в инструментах разработки Safari - здесь не сообщается об ошибках javascript, нет посторонних ошибок кодирования html - все это очень чисто (и довольно просто, когда я пытался это выяснить).
На данный момент, как запасной вариант, я добавил мета-вызов для обновления http каждые 10 секунд. Который позволяет мне видеть в моем файле development.log, что это единственный вызов, поступающий из браузера в приложение.
Мне бы больше всего понравились советы по устранению неполадок для javascript / jQuery. Мои нынешние попытки провоцировать события просто так, чтобы что-то не получилось и предоставить доказательства того, что что-то идет не так, также не работают!