Javascript 如何使用ajax和jQuery在循环中呈现部分内容?

Javascript 如何使用ajax和jQuery在循环中呈现部分内容?,javascript,jquery,ruby-on-rails,ruby-on-rails-4,Javascript,Jquery,Ruby On Rails,Ruby On Rails 4,我曾尝试使用ajax和jquery在单击时渲染部分内容。详情请参阅 它工作了,局部渲染了,但工作不正常 我已经把链接放置在一个循环中,但是当单击“新评论”时,它会出现在第一篇文章中,当我在第二/第三/第四篇文章中单击“新评论”时,所有的部分都会在第一篇文章中呈现。发生了什么事 请看下面我的代码 Post/index.html.erb 注释/new.js.erb $('new_comment').hide().after('') _表格2.erb 您对所有元素(帖子和新评论按钮)都使用了

我曾尝试使用ajax和jquery在单击时渲染部分内容。详情请参阅

它工作了,局部渲染了,但工作不正常

我已经把
链接放置在一个循环中,但是当单击“新评论”时,它会出现在第一篇文章中,当我在第二/第三/第四篇文章中单击“新评论”时,所有的部分都会在第一篇文章中呈现。发生了什么事

请看下面我的代码

Post/index.html.erb

注释/new.js.erb
$('new_comment').hide().after('')
_表格2.erb



您对所有元素(帖子和新评论按钮)都使用了相同的ID,因此当您单击新评论按钮时,所有部分都在第一篇帖子中呈现。因为它是找到的第一个匹配元素。 你应该为你的帖子使用不同的元素ID,这样当你点击新评论时,你就会知道在哪里(我指的是哪个帖子)呈现表单。 例如,您可以使用如下计数器:


然后,您只需传递元素id并更改以下行:
$(“#”+PassedElementId).hide()。在(“”)

谢谢你的回答之后,它不起作用,我得到了
的语法错误,不管怎样,每个帖子都有自己的
:id
,我是否需要将
:id
传递给jQuery,这样它就知道它应该呈现什么内容了?@laman问题是
$('new\u comment')。hide().after(“”)
。所有注释按钮都具有相同的id(新注释),当您尝试隐藏注释按钮并呈现注释表单时,只有第一行会受到影响。注释按钮必须使用唯一的ID。通过添加
i++
我只是想介绍一下这个策略。谢谢你的回复,我真的不明白
$('#'+PassedElementId)
是如何工作的,我想知道你能否解释一下。干杯
<% @posts.each do |post| %>

   <%= post.title %>

   <%= post.content %>

   <%= link_to 'New Comment', new_comment_path, id: 'new_comment', remote: true %>

<% end %>
$('#new_comment').hide().after('<%= j render("form") %>')
<%= form_for(@comment) do |f| %>

  <div>
    <%= f.label :body %><br>
    <%= f.text_area :body %>
  </div>

  <div>
    <%= f.submit %>
  </div>

<% end %>