取消在rails remote_for上提交

Car*_*uro 1 forms jquery ruby-on-rails-3

我有一个form_for(:remote=>true)工作,但我想在提交之前显示一个常规的JavaScript确认框.

反正有没有实现这个目标?理想情况下某种类型:before或:onsubmit可以接受取消提交类似于:return confirm("Are you sure?");或者javascript事件钩子?

谢谢

Mic*_*ley 11

您可以使用以下confirm选项轻松完成此操作:

<%= for_form @my_thing, remote: true do |f| %>
  <%= f.text_field :my_value %>
  <%= f.submit 'Submit', confirm: 'Are you sure?' %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

您需要使用Rails UJS驱动程序(默认情况下在新的Rails项目上启用)才能无缝地工作.

也有挂钩插入表单提交的生命周期,您可以访问,如果你愿意的话:

  • ajax:beforeSend - 在发出XHR请求之前触发; 返回false以取消请求
  • ajax:success - 从服务器成功响应触发
  • ajax:error - 从服务器的错误响应触发
  • ajax:complete - 从服务器触发成功或错误响应

因此,作为示例,您应该能够confirm使用以下代码模仿表单助手选项:

$("#my_remote_form").on('ajax:beforeSend', function() {
  return confirm("Are you sure?");
});
Run Code Online (Sandbox Code Playgroud)