使用Rails完全自定义验证错误消息

使用Rails我试图在保存时收到“歌曲字段不能为空”的错误消息。 执行以下操作:

validates_presence_of :song_rep_xyz, :message => "can't be empty"

...只显示“歌词XYW不能为空”,这是不好的,因为该字段的标题不是用户友好的。 我怎样才能改变这个领域的标题? 我可以更改数据库中字段的实际名称,但我有多个“歌曲”字段,而且我确实需要具有特定的字段名称。

我不想绕过Rails的验证过程,我觉得应该有办法解决这个问题。


现在,设置人性化名称和自定义错误消息的可接受方式是使用语言环境。

# config/locales/en.yml
en:
  activerecord:
    attributes:
      user:
        email: "E-mail address"
    errors:
      models:
        user:
          attributes:
            email:
              blank: "is required"

现在,“email”属性的人性化名称和存在验证消息已更改。

可以为特定模型+属性,模型,属性或全局设置验证消息。


尝试这个。

class User < ActiveRecord::Base
  validate do |user|
    user.errors.add_to_base("Country can't be blank") if user.country_iso.blank?
  end
end

我在这里找到了。

这是另一种方法。 你要做的是在模型类上定义一个human_attribute_name方法。 该方法将字段名称作为字符串传递,并返回用于验证消息的字符串。

class User < ActiveRecord::Base

  HUMANIZED_ATTRIBUTES = {
    :email => "E-mail address"
  }

  def self.human_attribute_name(attr)
    HUMANIZED_ATTRIBUTES[attr.to_sym] || super
  end

end

以上代码来自这里


在你的模型中:

validates_presence_of :address1, :message => "Put some address please" 

在你看来

<% m.errors.each do |attr,msg|  %>
 <%=msg%>
<% end %>

如果你这样做

<%=attr %> <%=msg %>

您会收到此属性名称的错误消息

address1 Put some address please

如果您想获取单个属性的错误消息

<%= @model.errors[:address1] %>
链接地址: http://www.djcxy.com/p/63549.html

上一篇: Fully custom validation error message with Rails

下一篇: side WebHook handler?