2016-07-02 138 views
0

我有一个模型,其中包含电子邮件作为其属性之一。它具有以下验证:在表单中每个字段只显示1个错误

validates :email, presence: true, length: { maximum: 50 }, format: { with: VALID_EMAIL_REGEX } 

当用户提交表单与空空的电子邮件,我得到以下2个错误:

  • 电子邮件地址不能为空
  • 电子邮件无效

如何在这种情况下只显示与字段相关的第一条错误消息?

我做检索与对象相关的错误信息:

@object.errors.full_messages 

回答

2

你可以做到这一点很容易与这条线:

<%= @object.errors.full_messages.first if @object.errors.any? %> 

与对象实例只需更换。如果你想只用一个字段中使用再有就是这种方法

http://api.rubyonrails.org/classes/ActiveModel/Errors.html#method-i-full_messages_for

object.errors.full_messages_for(:email) 

这将让你的具体错误单场

编辑:

如果你有一个很多领域:

<% @object.errors.each do |attr, msg| %> 
    <%= "#{attr} #{msg}" if @object.errors[attr].first == msg %> 
<% end %> 
+0

谢谢,是否有可能在更多可扩展的方式?例如,如果我的表单有10个字段,我不想单独提取与每个字段关联的第一个错误。 – user1175969

+1

我编辑的问题 - 你可以自定义输出,如果需要内“” –

相关问题