为什么我的验证错误 - 验证:terms_of_service,接受:是吗?

时间:2013-10-01 16:44:43

标签: ruby-on-rails ruby validation

我有这个验证

   validates :terms_of_service, acceptance: true

我的数据库中没有名为terms_of_service的字段,在我看来我有

    <%=f.check_box :terms_of_service %>

如果我选中复选框一切正常,但当我不选中复选框时我试图创建记录我有这个错误

    undefined method `counts' for #<ActiveModel::Errors:0x007f83f01b6a18>

错误在此视图中

   <% if @model.errors.any? %>
     <div id="error_explanation">
      <h2><%= pluralize(@model.errors.counts, "error") %> prohibited this   model from being saved:</h2>

      <ul>
       <% @model.errors.full_messages.each do |msg| %>
          <li><%= msg %></li>
       <% end %>
      </ul>
   </div>
 <% end %>

任何想法,请

2 个答案:

答案 0 :(得分:0)

问题出在这一行:

<h2><%= pluralize(@model.errors.counts, "error") %>

您可能希望#count不是#counts

即:

<h2><%= pluralize(@model.errors.count, "error") %>

另外,下次请在帖子中添加整个错误跟踪。

documentation page for ActiveModel::Errors

提供更多信息

答案 1 :(得分:0)

问题是如果未选中terms框,则验证失败并呈现错误,但错误消息有错误 - counts应为count < / p>

尝试向验证程序添加自定义消息:

validates :terms_of_service, acceptance: { true, 
                             message: "You must accept the terms of service to continue"}