如何简单地验证rails中的复选框

gei*_*ash 7 validation checkbox ruby-on-rails

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

让我们说我有复选框:

<%= check_box_tag '' %>
Run Code Online (Sandbox Code Playgroud)


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

我在rails中看到了大多数关于复选框验证的帖子,但它们都不适合我的需求.

kos*_*tja 19

添加

validates :terms_of_service, :acceptance => true
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

<%= javascript_include_tag "my_javascipt_file" %>

并在点击时触发该功能:

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

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

  • kostja提供了相当不错的解释,但我个人更喜欢在客户端和我的控制器中进行验收验证,然后如果接受我提交当前时间让我们说用户模型到其"accepted_conditions_at"属性,这样我可以轻松维护如果用户出于某种原因发生变化,请让用户重新接受我的条款 (2认同)