我想知道如何完全自定义验证消息,这是我的代码看起来像
user_profile.rb: -
validates: first_name, :presence => {:message => "First name can't be blank"}
但是这给了我一个错误信息的用户配置文件名的名字不能为空,我想要的是有一个错误消息的名字不能为空。 我到处寻找解决办法,我想我必须做在en.yml文件中的一些变化,但我不知道该怎么办。 任何帮助吗?
我想知道如何完全自定义验证消息,这是我的代码看起来像
user_profile.rb: -
validates: first_name, :presence => {:message => "First name can't be blank"}
但是这给了我一个错误信息的用户配置文件名的名字不能为空,我想要的是有一个错误消息的名字不能为空。 我到处寻找解决办法,我想我必须做在en.yml文件中的一些变化,但我不知道该怎么办。 任何帮助吗?
你有三个选择:
validate do |user|
user.errors.add_to_base("First name can't be blank") if user.first_name.blank?
end
要么
这样做user_profile.errors.full_messages会给你- > ["First Name can't be blank"]
validates: first_name, :presence => {:message => "can't be blank"}
要么
# config/locales/en.yml
en:
activerecord:
attributes:
user_profile:
first_name: "First name"
errors:
models:
user_profile:
attributes:
first_name:
blank: "can't be blank"
有关如何使用语言环境的更多信息,看看这个
Rails使用自己的错误处理。 这意味着,它显示的数据库列。 这导致成列 * 的名称不能为空。
尝试使用这样的事情,只有你所要做的就是改变你的模型。
<% if object.errors.any? %>
<div id="error_explanation">
<h2>
<%= pluralize(object.errors.count, "error") %>
probited this <%= object.class.to_s.underscore.humanize.downcase %> from being saved
</h2>
<p>There were problems with the following fields:</p>
<ul>
<% object.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
除此之外,我会使用对空白字段的JavaScript / HTML5验证。 为了降低带宽使用率。 希望这可以帮助。