Rails:仅在选中复选框时,在保存到数据库之前确认弹出窗口

时间:2013-10-22 13:37:56

标签: jquery ruby-on-rails checkbox confirm

我遇到以下问题:

projects/new页面上的新项目表单中,有一个复选框,可用于切换项目的is_public属性。我想在创建新项目之前为用户提供弹出式javascript确认窗口,但前提是选中此特定复选框。

到目前为止,我一直试图这样做:

<%= labelled_form_for @project do |f| %>
...
<%= f.check_box :is_public %>
...
<%= submit_tag 'create', :confirm => params[:project][:is_public] == '1' ? "Are you sure you want to create public project?" : nil  %>

但由于create行动直到此时才执行,params[:project][:is_public]不存在,因此此解决方案不起作用。

我一直在考虑使用jquery来确定是否选中了此复选框,但我不知道如何将获取的jquery变量传递给rails。

修改

这是最终的实施。

$(function(){
  $('#new_project').on('submit.confirm', function(){
    if ($('#project_is_public').prop( "checked" )) {
      if(!confirm("Are you sure you want to create this project as public?")){
        $(this).removeAttr('data-submitted');
        return false;
      }
    }
    return true;
  });
});

submitted数据属性(防止多次提交表单)阻止了首次点击cancel按钮后再次提交表单的可能性。

1 个答案:

答案 0 :(得分:1)

您可以在表单提交确认..

为此您需要使用jquery表单提交进行验证 例如

$(document).ready(function(){
$('#form_id').submit(function(){
   if($('#my_check_box_id').is(":checked")) {
     message = confirm("Are you sure to make this project public?");
      if(message) {
        return true;
      } else {
       return false;
      }
   } else {
     return true;
   }
});
});

希望这会对你有所帮助:)。

修改

$(document).ready(function(){
    $('#form_id').submit(function(){
       if($('#my_check_box_id').prop( "checked" )) {
         message = confirm("Are you sure to make this project public?");
          if(message) {
            return true;
          } else {
           return false;
          }
       } else {
         return true;
       }
    });
    });