我在通过remote:true在我的页面上呈现数据时遇到问题。 我有一个评论和小组评论(对评论的评论)。当我点击第二个帖子下面的“评论”按钮时,评论会出现在第一个帖子下方,因为我的循环中有一些相同的ID“comment-list”。我应该怎么解决这个问题? P.S抱歉我的英文:)
以下是我的帖子和评论表格:
<% @posts.each do |post| %>
<li class="post">
...
<% if current_user == post.user %>
<%= link_to "delete", post, method: :delete, remote: true %>
<% end %>
</li>
<div id="comments-list">
<%= render partial: 'post_comments/comments', locals: { post: post } %>
</div>
<% if user_signed_in? %>
<div id="comment-form">
<%= render partial: 'post_comments/new_comment_form', locals: { post: post } %>
</div>
<% end %>
以下是我的create.js.erb
的外观$('#comments-list').html("<%= j (render partial: 'post_comments/comments', locals: { post: @post }) %>");
答案 0 :(得分:0)
我在类似情况下所做的是让你的div ID特定于每个帖子:
<div id="comments-list-<%= @post.id.to_s %>">
然后在你的jquery代码中指定相关的帖子:
$('#comments-list-<%= @post.id.to_s %>').html("<%= j (render partial: 'post_comments/comments', locals: { post: @post }) %>");
答案 1 :(得分:0)
让我们创建一个指定post
<% @posts.each do |post| %>
<div id="post_<%= post.id %>">
<!-- Your current code here -->
<div>
<% end %>
使用comments-list
作为课程(同样适用于comment-form
)
<div class="comments-list">
<%= render partial: 'post_comments/comments', locals: { post: post } %>
</div>
最后你的erb中的jquery选择器将是:
$("#post_<%= @post.id %> .comments-list")