Je suis relativement novice en ce qui concerne Ruby et j'essaie actuellement de mettre en œuvre un système de commentaires de style AJAX.Renvoie uniquement les nouveaux éléments de la base de données depuis la dernière vérification Rails
Lorsque l'utilisateur affiche un sujet, tous les commentaires actuels sur ce sujet seront affichés.
L'utilisateur peut poster un commentaire sur la page d'un sujet et il devrait automatiquement afficher sans avoir à actualiser la page, avec tous les nouveaux commentaires qui ont été postés depuis le dernier commentaire actuellement affiché à l'utilisateur.
Les commentaires doivent également être actualisés automatiquement à une fréquence spécifiée.
J'ai actuellement le code suivant:
vues/idée/view.html.erb
<%= periodically_call_remote(:update => "div_chat", :frequency => 1, :position => "top", :url => {:controller => "comment", :action => :test_view, :idea_id => @idea.id }) %>
<div id="div_chat">
</div>
vues/commentaire/test_view.html.erb
<% @comments.each do |c| %><div id="comment">
<%= c.comment %>
</div>
<% end %>
contrôleurs/comment_controller .rb
class CommentController < ApplicationController
before_filter :start_defs
def add_comment
@comment = Comment.new params[:comment]
if @comment.save
flash[:notice] = "Successfully commented."
else
flash[:notice] = "UnSuccessfully commented."
end
end
def test_render
@comments = Comment.find_all_by_idea_id(params[:idea_id], :order => "created_at DESC", :conditions => ["created_at > ?", @latest_time])
@latest = Comment.find(:first, :order => "created_at DESC")
@latest_time = @latest.created_at
end
def start_defs
@latest = Comment.find(:first, :order => "created_at ASC")
@latest_time = @latest.created_at
end
end
Le problème est que chaque fois que periodically_call_remote appelle, il renvoie la liste complète des commentaires pour ce sujet. D'après ce que je peux dire, @latest_time est constamment réinitialisé au plus tôt created_at, plutôt que de rester à jour avec le dernier created_at après que les commentaires ont été récupérés.
Je ne sais pas non plus comment je devrais actualiser directement les commentaires lorsqu'un commentaire est posté. Est-il possible de forcer un appel à periodically_call_remote sur une sauvegarde réussie?
a déplacé ce commentaire à une nouvelle réponse afin de le formater. –