场景:
topic 里面有个评论,用了remote: true
:
<div class="panel" style="padding: 0px;" id="new_comment">
<% if current_user %>
<%= form_for(resource, remote: true, url: url) do |f| %>
<%= f.text_area :content, label: false, placeholder: '添加评论', id: 'editor' %>
<%= f.submit "添加评论", class: 'button tiny success expand', data: { disable_with: '正在添加评论...'}, style: 'margin-bottom: 0px;' %>
<% end %>
<% else %>
<p>请登录后评论!</p>
<% end %>
</div>
还有一个create.js.erb
:
<% if @comment.errors.empty? %>
$('#comments-for-<%= @comment.commentable_type.downcase %>-<%= @comment.commentable_id %>').append('<%= j render @comment %>');
$('#new_comment .simditor-body').empty();
$('#new_comment .simditor-placeholder').show();
<% end %>
提交评论后,奇葩了:连续 post 了好几次(1 到 20 次不等),都是相同的请求:
Started POST "/topics/10/comments" for 127.0.0.1 at 2014-11-14 12:34:17 +0800
Processing by CommentsController#create as JS
Parameters: {"utf8"=>"✓", "comment"=>{"content"=>"<p>aAfasasfdsfasdfa</p>"}, "commit"=>"添加评论", "topic_id"=>"10"}
然后数据库就莫明奇妙地多次插入这些数据,页面也多次append
多条一样的评论。
临时的解决方案:就是把<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
放在head
里面加载(之前视放在body
下)
类似的错误应该如何深入调试。。。。