我对设置正确的验证错误消息感到困惑。
在模型中,我像这样设置了验证代码
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>
但是像这样的结果
我不想显示所有的错误消息。如果我希望根据错误显示如下所示的错误消息,该怎么办
发布于 2018-07-18 15:16:35
如果不希望验证器在您没有输入任何内容时验证您的输入,则可以在每个验证器上使用选项allow_blank: true
。
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 }
发布于 2018-07-18 15:19:13
问题是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>
https://stackoverflow.com/questions/51395727
复制相似问题