En essayant de créer un système qui informe l'utilisateur de tout nouveau message privé, la méthode d'index du contrôleur de messages crée des variables d'instance de @messages et @newmessages, les deux sont utilisés dans index.html .erb et je veux faire en sorte que index.js.erb fasse apparaître la boîte de message flash sur mon site.Envoyer une requête Javascript dans les rails
Ive a obtenu jquery pour exécuter une fonction toutes les quelques secondes, la fonction qui est exécutée obtient
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 $ ne marche pas semblent faire tourner le code sur index.js.erb qui est tout simplement:
alert("RESPONDING");
Je n'arrive pas à l'obtenir pour déclencher le code sur cette page.
J'ai trouvé que /messages.js qui ne renvoie pas javascript, la même chose que index.html.erb
l'action index du contrôleur est:
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
Hors sujet, mais ce que vous faites là n'est pas récursif. Le commentaire est trompeur. –
il est dans la nouvelle version de cette fonction essentiellement la même chose mais passe un délai plus élevé à l'appel de fonction suivante, puis s'arrête lorsque le délai est supérieur à 10 minutes – Arcath
Le point est que ni checkagain ni la fonction anonyme sont deux fois sur la pile en même temps; par conséquent, il n'y a pas de récursivité. –