使用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