Ruby on rails 在RubyonRails中设置正确的错误消息验证

Ruby on rails 在RubyonRails中设置正确的错误消息验证,ruby-on-rails,ruby,Ruby On Rails,Ruby,我无法设置正确的验证错误消息 在模型中,我设置了如下验证代码 validates :tel, presence: { message: 'is required'}, length: { minimum: 10, maximum: 11, message: 'wrong length tel number. must between 11-11 character' }, numericality: { message: 'just insert numeric'} <dl class

我无法设置正确的验证错误消息

在模型中,我设置了如下验证代码

validates :tel, presence: { message: 'is required'}, length: { minimum: 10,  maximum: 11, message: 'wrong length tel number. must between 11-11 character' }, numericality: { message: 'just insert numeric'}
<dl class="cf">
    <dt class="required">tel number</dt>
    <dd><%= f.text_field(:tel, {:class => 'input_text tel'}) %>
         <% if @user.errors.include?(:tel) %>
            <div class="err"><p><%= @user.errors[:tel] %></p></div>
        <% end %>
    </dd>
</dl>
在查看页面中,我将代码设置为

validates :tel, presence: { message: 'is required'}, length: { minimum: 10,  maximum: 11, message: 'wrong length tel number. must between 11-11 character' }, numericality: { message: 'just insert numeric'}
<dl class="cf">
    <dt class="required">tel number</dt>
    <dd><%= f.text_field(:tel, {:class => 'input_text tel'}) %>
         <% if @user.errors.include?(:tel) %>
            <div class="err"><p><%= @user.errors[:tel] %></p></div>
        <% end %>
    </dd>
</dl>

电话号码
'输入\文本电话'})%>

但结果是这样的

我不想显示所有的错误信息。如果我希望根据错误信息以这种方式显示错误消息,该怎么办

如果您不想让每个验证器在您未输入任何内容时验证您的输入,则可以使用每个验证器上的选项

validates :tel,
          presence: { message: 'is required' },
          length: { minimum: 10,  maximum: 11, message: 'wrong length tel number. must between 11-11 character', allow_blank: true },
          numericality: { message: 'just insert numeric', allow_blank: true }

问题在于
Rails
运行所有定义的验证。 为了获得所需的结果,您可以显示第一条消息:

<dl class="cf">
    <dt class="required">tel number</dt>
    <dd><%= f.text_field(:tel, {:class => 'input_text tel'}) %>
         <% if @user.errors.include?(:tel) %>
            <div class="err"><p><%= @ultratech.errors[:tel].first %></p></div>
        <% end %>
    </dd>
</dl>

电话号码
'输入\文本电话'})%>

或者全部显示,例如:

<dl class="cf">
    <dt class="required">tel number</dt>
    <dd><%= f.text_field(:tel, {:class => 'input_text tel'}) %>
         <% if @user.errors.include?(:tel) %>
            <% @ultratech.errors[:tel].each do |error| %>
              <div class="err"><p><%= error %></p></div>
            <% end %>
        <% end %>
    </dd>
</dl>

电话号码
'输入\文本电话'})%>


您能否尝试拆分验证,如
验证是否存在:tel\u number,:message=>“不能为空”验证:tel\u number:message=>“必须为数字”
并查看是否为空helps@Subash检查我的答案。我不确定上述改变是否能解决这个问题。即使
tel\u number
nil
,它仍将检查数值性:)