Javascript Rails/Ajax没有替换DIV,而是将新DIV嵌套在旧DIV中

Javascript Rails/Ajax没有替换DIV,而是将新DIV嵌套在旧DIV中,javascript,jquery,ruby-on-rails,ajax,Javascript,Jquery,Ruby On Rails,Ajax,提交表单后,尝试使用ajax更新DIV 我的部分_inline.html.erb是 <div class="large-12 columns" id="inline_posts"> <% @posts.each do |post| %> <div class="row"> <div class="large-10 columns left"><%= post.content %></div> <di

提交表单后,尝试使用ajax更新DIV

我的部分_inline.html.erb是

<div class="large-12 columns" id="inline_posts">
<% @posts.each do |post| %>
  <div class="row">
    <div class="large-10 columns left"><%= post.content %></div>
    <div class="large-2 columns right"><%= link_to 'Remove', post, method: :delete,  class: 'tiny button' %></div>
  </div>
<% end %>
</div>

我的js.erb是

$('#inline_posts').html("<%= j render 'posts/inline' %>");
$('#new_post').html("<%= j render 'posts/form' %>");
$('#inline_posts').html(“”);
$('#new#post').html(“”);
表单的重新渲染很好。表单被重新绘制,就像是新的一样

DIV的呈现是一个问题。它呈现新的DIV而不是旧的DIV。为什么它不替换现有DIV,就像替换现有表单一样

曾经通过AJAX更新过的DIV看起来像

<div class="large-12 columns" id="inline_posts">
  <div class="large-12 columns" id="inline_posts">

在旧版本中加入新版本

编辑:

表单HTML

<div class="large-12 columns"> <--- Note this has no id specified
        <form accept-charset="UTF-8" action="/posts" class="new_post" data-remote="true" id="new_post" method="post">
<div style="display:none"><input name="utf8" type="hidden" value="&#x2713;" /></div>
  <div class="row">
  <div class="large-12 columns">
    <label for="post_Post a message">Post a message</label>
  </div>
  </div>
  <div class="row">
  <div class="large-10 columns">
    <textarea class="form-control" id="post_content" name="post[content]">
</textarea>
  </div>

  <div class="large-2 columns">
    <input class="button" name="commit" type="submit" value="Post" />
  </div>
  </div>
</form>
</div>

.html
只是
.innerhtml
的优雅包装,因此
posts/inline
所呈现的内容将被放置在
inline\u posts
div标记中

你可能想试试

您的
posts/inline
模板文件必须以
开头,否则您将无法获得所获得的结果

它适用于表单,因为您的
posts/form
模板文件不是以
开头的,因此,posts文件中的html在该元素中呈现,如下所示:

<div class="large-12 columns" id="inline_posts">INSERTING posts/inline HTML HERE</div>
<form id="new_posts">INSERTING posts/form HTML HERE</form>
在此处插入帖子/表单HTML
form#new#u posts
不是模板文件的一部分,其中as
div#inline#u posts
必须是其各自模板文件的一部分。这就是为什么你和一个而不是另一个筑巢


我希望这是有道理的。

我没有包括它,因为它没有问题。它的输出完全符合预期。我可以把它放在是否相关的位置,但是即使我删除了JavaScriptThank的这一部分,问题也会发生。为什么它适用于表单?表单被完全替换,而不是嵌套在自身中。在
posts/form
中呈现的任何内容都嵌套在
元素中。我需要查看
posts/form
的模板才能给你一个更完整的答案。我更新了我的帖子以添加表单的HTML。表单的id是“new#u post”,而不是周围的DIV我编辑了我的答案,希望你看到的行为更有意义:)我很困惑,没有DIV#new#u post,如果有我会理解你说的话。NEW_POSTS是表单自己的ID。
<div class="large-12 columns" id="inline_posts">INSERTING posts/inline HTML HERE</div>
<form id="new_posts">INSERTING posts/form HTML HERE</form>