我有一个标准表单,用于 AJAX 提交的控制器的新操作。每次用户单击提交按钮或按一次回车,表单立即提交两次,创建两个相同的对象。
模型上没有验证,并且在某些情况下是合适的。
表单视图如下所示:
<%= simple_form_for @contact, remote: true do |f| %>
<table>
<tr><td class="cell-right-align">First Name</td><td><%= f.text_field :first_name %></td></tr>
<tr><td class="cell-right-align">Last Name</td><td><%= f.text_field :last_name %></td></tr>
<tr><td></td><td><%= f.submit "Create Contact" %></td></tr>
</table>
<% end %>
它的控制器动作:
def create
respond_to do |format|
if @contact.save
format.js { render 'search_result' }
else
format.js { render 'new' }
end
end
end
创建操作的日志显示,在同一秒内有两个 POST 操作,两者都是相同的。
如何停止双重 POST?我试过添加:disable_with => 'Saving...'
到提交按钮,但没有效果。