Rails 4:Ajax 重新加载后提交按钮没有响应

Rails 4: Submit button not responsive after its been reloaded by Ajax

我的用户展示页面有一部分

          <div id = "AboutMeJS">
            <%= render "about_me" %>
          </div>

_about_me.html.erb部分是:

     <% unless @user.about.blank? %>
       <div class = "HeaderRow">
        <span class="glyphicon glyphicon-user AboutMe" aria-hidden="true"> </span>
        <div class = "Header">About <%= about_me_variable %>
        <% if current_user == @user %>
              <a class = "ProfileEdit" id = "AboutMeEdit">Edit</a>
        <% end %></div>
        <div class = "AboutMe"><%= @user.about.html_safe %></div>
      <%= render 'about_me_change' %>
     </div>
    <%end %>

这还包含部分内容:_about_me_change.html.erb (不确定这是否是个好主意 - 我是 rails 的新手):

 <div id = "AboutMeForm">
  <div class = "UserEditsJS">
    <%= simple_form_for(@user, html: { multipart: true }, remote: true) do |f| %>
    <%= f.text_area :about, class: 'form-control', :id => "edit" %>
  </div>
     <%= f.submit "Update", class: "btn btn-success AboutMeUpdateButton", id: "ThirdUpdate" %>
 <% end %>
 </div>

最后是我的:about_me.js.erb

   $('#AboutMeJS').html("<%= escape_javascript(render('about_me')) %>")

user_controller 更新操作允许通过 ajax

进行更新
   def update
     respond_to do |format|
       if @user.save
        flash.now[:success] = "Profile updated"
        format.html { redirect_to @user }
        format.js { render 'about_me'}
       else
        flash.now[:danger] = "There was a problem with your update"
        format.html { redirect_to user_path(@user) }
        format.js
       end
     end
   end
 end

一次就可以了。但是,如果我随后尝试另一个更新 - 提交按钮,在第一次更新后重新加载时没有响应。我在 PHP 的设置中看到了与此类似的其他问题,当提交按钮由 jQuery 处理时(使用 "on" 而不是 "click"),但在 Rails设置。

为什么按钮没有第二次提交?

可能原因不对html。 about_me_change 部分可能如下所示:

<div id="AboutMeForm">
  <div class="UserEditsJS">
    <%= simple_form_for(@user, remote: true) do |f| %>
      <%= f.field :about, as: :text %>
      <%= f.button :submit %>
    <% end %>
  </div>
</div>

请注意,simple_form_for 方法接收一个块,该块将被插入到 <form> 标记中。所以你必须在同一个嵌套级别上打开和关闭<div>

第一次更新后,javascript替换部分表格,其中包括领导者<form>,不包括</form>

P.S。 multipart: true 将在需要时自动添加。

P.P.S。当您使用 simple_form gem 时,您可以使用 f.field 代替 f.text_field 方法,并使用 f.button :submit 代替 f.submit。详情见documentation