2013-04-26 43 views
5

您如何简单地验证复选框是否在轨道中被选中? 该复选框用于最终用户协议。它位于一个模式窗口中。如何简单地验证轨道中的复选框

可以说我有复选框:

<%= check_box_tag '' %> 


在哪里,我应该怎么验证呢?

我在这里看到了关于复选框验证的大多数帖子,但没有一个适合我的需求。

回答

14

添加

validates :terms_of_service, :acceptance => true 

到您的模型应该这样做。请查看here了解更多详情和选项。

然而,如果接受这些条款是不是你的模型形式的一部分,你应该使用客户端验证,即JavaScript中,像这样(jQuery中):

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

您可以添加脚本文件到您的看法是这样的:

<%= javascript_include_tag "my_javascipt_file" %>

和触发功能上点击:

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

编辑:你可以指定一个ID到你的复选框,像这样:check_box_tag :checkbox。 HTML将如下所示:<input id="checkbox"有关更多选项,请参阅these examples

+0

在这种情况下,我将如何“命名”复选框? – geirmash 2013-04-26 13:50:55

+0

@ user2019492 - 请参阅编辑 – kostja 2013-04-26 14:00:15

+2

kostja提供了一个很好的解释,但是我个人更喜欢在客户端和我的控制器中进行接受验证,然后如果接受我提交当前时间让我们说一个用户模型到它的“ accepted_conditions_at“属性,这样我可以轻松维护并让用户重新接受我的条件条件,如果他们由于某种原因而更改 – dennis 2013-04-26 14:06:22