我正在尝试在一个表单中验证字段,我希望输入两个不同的消息两个不同的消息。
我有以下代码:
validates_format_of :email,
:with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i,
:allow_blank => false
如果电子邮件字段留空,则会在网站上显示错误消息“电子邮件无效”。
我如何获得验证以返回一条消息,如果该字段被用户遗漏,该字段不能为空,而不是仅仅说它太短?
答案 0 :(得分:1)
您为空白案例创建单独的验证:
validates_presence_of :email
validates_format_of :email,
:with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i,
:allow_blank => true
答案 1 :(得分:1)
我喜欢用2种不同的验证来处理这个问题(并确保它们不会同时发射)。所以像这样:
validates_format_of :email,
:with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i,
:allow_blank => true
validates_presence_of :email
validates_presence_of
处理确保电子邮件不为空。将validates_format_of
更改为使用:allow_blank => true
可确保在电子邮件空白时格式化验证无法运行。
在Rails 3.0+中,您还可以使用validates
将两个验证合并为一个验证:
validates :email,
presence: true,
format: { with: /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i,
allow_blank: true }
答案 2 :(得分:1)
您需要单独添加另一个在线验证检查,例如:
validates :email, presence: true, format: { with: YOUR_REGEX }