2010-03-04 9 views
0

En apprenant le rubis sur rails j'ai créé un site de blog. Lorsque l'utilisateur ajoute un message via AJAX, les RJS suivantes est appelée:visual_effect après replace_html ne fonctionne pas dans rjs

page.replace_html 'posts', :partial => @posts 
page.visual_effect :Highlight, 'post_' + @post.id.to_s 

Cependant, le point culminant ne se produit pas .. ni est une sorte d'effet, même une peau.

Clues:

  • Il fonctionne si je fais juste un insert_html pour seulement le nouveau poste (mais je veux de mettre à jour la liste complète des messages à ce moment)
  • Si je coder en dur l'id à l'id suivant dans la séquence, cela ne fonctionne pas sur le post, mais cela fonctionne sur le post suivant. {Ex .. hardcode post_100 ... pas fort sur 100 présenter, mettre en évidence 100 sur 101} soumettre
  • Alert montre que '' post_ + @ post.id.to_s est ce qui est attendu (post_100, etc.)

Des idées ou des suggestions de débogage?

Merci, Orlando

+0

Après l'ajout d'une publication, inspectez votre page à l'aide de quelque chose comme firebug pour voir le contenu réel de la nouvelle publication div. Je suppose que ce n'est pas post_100 mais quelque chose d'autre. –

+0

Bonne suggestion, mais il apparaît comme souhaité. Il est cohérent entre ce que montre Firebug et ce qu'une alerte affiche: page.replace_html 'messages',: partiel => @posts page.visual_effect: Mettez en surbrillance, 'post_' + @ post.id.to_s page << "alerte ('post_ "+ @ post.id.to_s +"'); " – Orlando

+0

Cette alerte vérifie seulement que id.to_s est "100", pas que le partiel contienne quelque chose avec id = "posts_100". Après avoir récupéré le résultat, $ ('posts_100') dans la console Firebug renvoie-t-il quelque chose? Ou, vous pouvez render_to_string/logger.debug votre partial pour voir s'il contient l'id correct. – wesgarrison

Répondre

0

peut vous alerter la innerHTML du $ ("post_#{@post.id}") avant la visual_effect.

Est-ce que firebug vous donne une erreur quand il arrive à l'effet visuel?

Pouvez-vous faire autre chose, comme une alerte après la ligne visual_effect?

Avez-vous les fichiers js requis inclus?

+0

Excellentes suggestions .. Je suis sûr que le js requis est inclus car d'autres effets visuels fonctionnent. Je n'ai pas remarqué d'erreurs dans firebug et je n'ai rien remarqué d'anormal avec le code HTML lors de l'inspection visuelle, mais je n'ai pas essayé les alertes. Cependant, depuis mon dernier post, j'ai décidé de ne plus compter sur RJS, et de faire en sorte que tout fonctionne bien en utilisant une architecture différente. – Orlando

0

Ce n'est pas vraiment une réponse au problème, mais j'ai depuis fait disparaître le recours aux rjs. Au lieu de cela que je suis le modèle décrit ici

http://blog.solnic.eu/2007/10/30/why-javascript-helpers-in-rails-are-evil

Et maintenant tous les effets fonctionnent comme prévu. Notez que j'ai réussi à faire fonctionner l'effet lorsque des commentaires ont été ajoutés en utilisant effectivement le même code qui aurait dû fonctionner ici, donc je suis assez convaincu qu'il y avait juste une sorte d'erreur d'opérateur bizarre.

Questions connexes