您如何简单地验证在 rails 中选中了一个复选框?该复选框用于最终用户协议。它位于模式窗口中。
可以说我有复选框:
<%= check_box_tag '' %>
我应该在哪里以及如何验证这一点?
我在这里看到了大多数关于 rails 中复选框验证的帖子,但没有一个适合我的需要。
您如何简单地验证在 rails 中选中了一个复选框?该复选框用于最终用户协议。它位于模式窗口中。
可以说我有复选框:
<%= check_box_tag '' %>
我应该在哪里以及如何验证这一点?
我在这里看到了大多数关于 rails 中复选框验证的帖子,但没有一个适合我的需要。
添加
validates :terms_of_service, :acceptance => true
你的模型应该这样做。在此处查看更多详细信息和选项。
但是,如果接受条款不是模型表单的一部分,则应使用客户端验证,即 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"
请参阅这些示例。
我能够跳过 jQuery 部分并对其进行验证以解决此问题的帮助。我的方法如下,我在 Rails 5.1.2 和 Ruby 2.4.2 上。
将此代码放入您的 slim、erb 或 haml 中;note 语法可能会略有不同。下面的行是专门针对苗条的。
f.check_box :terms_of_service, required: true
我在模型中使用了一部分 kostja 的代码建议。
validates :terms_of_service, :acceptance => true
添加到已经说过的内容,如果您想添加自定义错误消息,您可以将以下内容添加到您的表单中:
f.input :terms_of_service, as: :boolean
然后将以下内容添加到您的模型中:
validates :terms_of_service, acceptance: { message: "must be accepted"}
默认情况下,错误消息将以字段名称开头,然后是您的自定义消息(例如服务条款 [CUSTOM MESSAGE])。我还发现有用的是在标签中包含指向服务条款的链接,以便用户可以轻松访问它以查看他们同意的内容:
f.input :terms_of_service, as: :boolean, label: "I agree to the #{link_to "terms of service", [TERMS AND CONDITIONS PATH]}".html_safe