如何简单地validationrails中的复选框

你如何简单地validation在rails中检查了一个复选框? 该复选框用于最终用户协议。 它位于一个模态窗口中。

让我们说我有复选框:

 

我应该在哪里以及如何validation这一点?

我在这里看到了关于rails中复选框validation的大多数post,但它们都不适合我的需求。

添加

 validates :terms_of_service, :acceptance => true 

你的模型应该这样做。 在这里查看更多详细信息和选项。

但是,如果接受条款不是模型表单的一部分,则应使用客户端validation,即JavaScript,如此(在jQuery中):

 function validateCheckbox() { if( $('#checkbox').attr('checked')){ alert("you have to accept the terms first"); } } 

您可以像这样在视图中添加脚本文件:

<%= javascript_include_tag "my_javascipt_file" %>

并在点击时触发该function:

<%= submit_tag "Submit", :onclick: "validateCheckbox();" %>

编辑:您可以为您的复选框分配一个ID,如下所示: check_box_tag :checkbox 。 HTML将如下所示: 有关更多选项,请参阅这些示例

我能够跳过jQuery部分并获得validation以使用此问题帮助。 我的方法如下,我在Rails 5.1.2和Ruby 2.4.2上。

把这个代码放在你的苗条,erb或haml中; 注释语法可能略有不同。 下面这条线特别适合苗条。

 f.check_box :terms_of_service, required: true 

我在模型中使用了kostja代码建议的一部分。

 validates :terms_of_service, :acceptance => true