Je travaille sur une application web Ruby on Rails, dans laquelle j'ai plusieurs listes de messages. Chaque poste utilisera Ajax pour charger leurs commentaires. Afin de les remplir au bon endroit, je suis en train de faire ce qui suit:Ajax on Rails - J'ai un problème
Chaque message a une div avec un ID formaté comme suit: <div id="my_div_<%= post.id %>"></div>
. Ainsi, par exemple si le post.id est 12, l'identifiant sera "my_div_12".
action de mon contrôleur ressemble à ceci:
render :update do |page|
page.replace_html 'my_div_' + params[:post_id].to_s, :partial => 'my_comments_section_partial_path'
end
Cela fonctionne bien que si je poste une seule fois sur la page. Mais dans ce site, chaque post peut être listé plus d'une fois, car il existe plusieurs listes (derniers posts, populaires, tops, etc). Et tous auront leur section Commentaires à montrer. Le problème est maintenant que, comme la fonctionnalité de la section commentaires est à l'intérieur d'une vue partielle, elle fonctionnera de la même manière pour chaque type de liste (comme prévu), et par conséquent, elle ne fait pas la différence entre les divs (parce qu'ils auront le même post.id, et donc, id de la même div).
Ma question est maintenant: comment pourrais-je résoudre ce problème? Y a-t-il une meilleure façon de faire cela?
Merci d'avance!
EDIT:
Juste pour préciser ce que je veux, en quelques mots:
Je voudrais le code page.replace_html 'my_div_' + params[:post_id].to_s, :partial => 'my_comments_section_partial_path'
pour remplacer cette partie dans CHAQUE div appelé 'my_div' + params[:post_id].to_s
(car il peut y avoir plus d'un div dans la même page avec le même id).
À quoi ressemble votre contrôleur? Vous dites que tous les div ont le même ID? – Trip
Quel est le problème que vous essayez de résoudre? Un message donné aura toujours des commentaires identiques à ce même message affiché dans un autre widget (ou ailleurs). – Eric
J'ai dans plus d'un endroit de la même page, le même poste. Maintenant, chaque article a une section "comments" qui est affichée (et chargée) quand un bouton "Show comments" est cliqué. Dans l'action du contrôleur que j'ai posté ci-dessus, je remplace le commentaire div pour un partiel avec les commentaires du post. Donc, cela sera remplacé seulement dans un div (et j'ai un de ces divs avec le même id, par chaque poste avec le même id. Par exemple: je montre le poste # 2 dans la page deux fois, alors j'en aurai deux divs avec l'id = "div_post_2"). Donc, je voudrais remplacer les résultats de ces commentaires dans chaque div avec le même id. –