2010-10-13 28 views
0

J'essaye d'obtenir la pagination pour travailler avec jQuery. J'utilise la gemme will_paginate. Cela fonctionne normalement (sans javascript). J'ai essayé de suivre un railcast (http://railscasts.com/episodes/174-pagination-with-ajax) mais j'ai toujours un problème.jQuery appel pour un partiel ne fonctionne pas s'il y a du code RoR dedans?

show.js.erb

$('#comments').html("<%= escape_javascript(render "comments/comment.html.erb") %>"); 

Cela fonctionne lorsque le fichier partiel est juste html. IE no <% code comme ceci%>. Pourquoi? Est-ce que .html est la mauvaise fonction jQuery à appeler? Que devrais-je utiliser?

De éprouvante permet des choses, ce code pourrait être le problème:

$(".pagination a").click(function() { 
    //$(".pagination").html("Page is loading..."); 
    $.get(this.href, null, null, "script"); 
    return false; 
    }); 

ce qui est "script"?

Répondre

0

Après beaucoup bricoler, j'ai trouvé mon problème:

j'ai ajouté à mon partielle:

<%= will_paginate @comments %> 
<% @comments.each do |comment| %> 
//partial stuff 
<% end %> 

Le screencast ne montre pas où il a mis la ligne will_paginate, donc je suppose qu'il est resté dans la poster un fichier. Il n'a pas non plus montré la boucle dans le fichier partiel. Je n'avais pas réalisé que vous deviez le faire puisque les rails le font quand vous appelez un fichier partiel.

+0

également rendre @ commente fait des doublons alors que le rendu des commentaires/commentaires ne fait pas. –

0

Bien que je ne sais pas ruby, selon la page que vous Linked, manque une paire de parenthèses:

$('#comments').html("<%= escape_javascript(render("comments/comment.html.erb")) %>");

+0

Merci, mais cela ne fait aucune différence :) –

+1

Désolé, j'ai essayé =/ – Ben

0

Je n'utilise ruby ​​et je suis assez non-initiés à jQuery, mais si j'interprète cela correctement, vous essayez d'ajouter du code HTML à un élément entièrement du côté client, en attendant que le balisage côté serveur soit analysé.

Ce code ne s'exécute jamais sur le serveur. Pour que le balisage côté serveur soit analysé, vous devez effectuer une autre requête serveur (par exemple avec XMLHttpRequest), qui traiterait peut-être un fichier avec ce balisage exact sur le serveur, qui traiterait alors votre serveur ... directives secondaires.

Vous serez probablement intéressé par jQuery's load function pour cela.