0

我有这个验证

   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 %>

任何想法,请

4

2 回答 2

0

问题出在这一行:

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

你可能#count不想#counts

IE:

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

此外,下次请在您的帖子中包含整个错误跟踪。

ActiveModel::Errors的文档页面上提供了更多信息

于 2013-10-01T16:51:06.153 回答
0

问题是,如果terms未选中该框,则验证失败并呈现您的错误,但错误消息有错误 -counts应该是count

尝试向您的验证器添加自定义消息:

validates :terms_of_service, acceptance: { true, 
                             message: "You must accept the terms of service to continue"}
于 2013-10-01T16:51:10.840 回答