Измените свой HTML, чтобы у вас не было повторяющихся идентификаторов в элементах CommentContainer.Вот почему jQuery только находит первый - вы создаете недопустимый HTML.
Предполагая, что у вас есть одна кнопка Комментарий на микросообщение, вы должны добавить идентификатор микросообщения в качестве атрибута данных в заголовок и извлечь его внайти правильный CommentContainer.Каждый контейнер комментариев должен содержать идентификатор микросообщения, которому он принадлежит, в своем идентификаторе.
HTML:
<div class='Actions'>
<div class='CommentButton'>
<span class='CommentIcon'></span>
<span class='CommentNum'>5</span>
<span class='CommentTitle' data-micropost='<%= micropost.id %>'>Comments</span>
</div>
</div>
<div id='CommentContainer-<%= micropost.id%>' class='CommentContainer'>
<div class='Comment'>
<%=render "comments/form" %>
</div>
<div id='comments'>
<%=render @micropost.comments %>
</div>
</div>
Javscript:
$(".CommentTitle").click(function(){
var title = this;
var postID = $(this).data('micropost');
$("#CommentContainer-" + postID).slideToggle("slow", function(){
$(".CommentTitle", title).html($(this).is(":hidden") ? "Comments" : "Comments");
});
});
Измените свой CSS, чтобы скрыть.CommentContainer вместо # CommentContainer