2010-01-02 1 views
0

Im пытается создать систему, которая информирует пользователя о любых новых личных сообщениях, метод индекса контроллера сообщений создает переменные экземпляра @messages и @newmessages, оба они используются в index.html .erb, и я хочу сделать так, чтобы index.js.erb создавал окно флеш-сообщений на моем сайте.Отправка запроса на Javascript в rails

Ive получил JQuery, чтобы запустить функцию каждые несколько секунд, функция, которая получает ПУСК

function checkagain(){ 
//Start a Timer, dont want it bombarding the server with constant requests 
$.timer(10000,function(){ 
    $.getScript("/messages.js"); 
    //RECURSE, see you again in 10 seconds 
    checkagain(); 
}); 
} 

$ .getScript не кажется, чтобы сделать его запустить код на index.js.erb который просто:

alert("RESPONDING"); 

Я не могу заставить его запускать код на этой странице.

Я обнаружил, что /messages.js что не возвращает JavaScript, так же, как index.html.erb

индекс действие контроллера:

def index 
    @messages = Message.find(:all, :conditions => "receiver_id = '#{current_user.id}' AND `read` = '1'") 
    @newmessages = Message.find(:all, :conditions => "receiver_id = '#{current_user.id}' AND `read` = '0'") 
end 
+1

Вне темы, но то, что вы делаете, не является рекурсией. Комментарий вводит в заблуждение. –

+0

он находится в новой версии этой функции, по существу, то же самое, но передает более высокую задержку в следующий вызов функции, а затем останавливается, когда задержка превышает 10 минут. – Arcath

+0

. Дело в том, что ни checkagain, ни анонимная функция не находятся в стеке дважды в то же время; следовательно, нет рекурсии. –

ответ

0

Попробуйте добавления случайная строка запроса, чтобы заставить ваш браузер повторно загрузить файл JS:

$.getScript("/messages.js?random=" + Math.random()); 
+0

JQuery allready, похоже, делает это, и я не могу использовать ruby ​​в файле .js. – Arcath

0

Не могли бы вы размещаете код с индексом действия контроллера сообщений? Это не проблема jquery, если message.js не возвращает ожидаемый javascript.

У вас есть сообщение/index.js.erb, которое должно возвращать этот сигнал оповещения, или у вас есть файл messages.js в вашем общедоступном каталоге где-нибудь?

+0

. Добавлен код для действия индекса. – Arcath

0

Вы можете взглянуть на Juggernaut, что позволит вам нажать на браузер клиента с использованием ресурса Flash 8.

+0

. Идентификатор не используется. Причина 90% клиентов будет иметь только крах флэш-памяти. – Arcath

+0

Также использует прототип, который не будет работа с jQuery – Arcath

Смежные вопросы