我有以下问题:
在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
data 属性(防止多次提交表单)阻止了第一次单击cancel
按钮后再次提交表单的可能性。