使用remote渲染部分:如果我有几个相同的ID,则为true

时间:2016-02-17 15:59:07

标签: javascript jquery html ruby-on-rails ajax

我在通过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 }) %>");

2 个答案:

答案 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)

  1. 让我们创建一个指定post

    的包装器
    <% @posts.each do |post| %>
      <div id="post_<%= post.id %>">
        <!-- Your current code here -->
      <div>
    <% end %>
    
  2. 使用comments-list作为课程(同样适用于comment-form

    <div class="comments-list">
      <%= render partial: 'post_comments/comments', locals: { post: post } %>
    </div>
    
  3. 最后你的erb中的jquery选择器将是:

    $("#post_<%= @post.id %> .comments-list")