让我说我已经在模型中设置了这样的验证
validates :tel, presence: true , length: { minimum: 10, maximum: 11 }, numericality: { only_integer: true }
如何为每次验证在视图中显示自定义消息。
当我在视图页面中设置它时。
<% if @diary.errors.include?(:tel) %>
<div class="err"><p><%= @diary.errors.full_messages_for(:tel).join("") %></p></div>
<% end %>
它直接显示所有错误消息。我想在这样的视图中显示
if(error_require)
echo "tel is needed"
else if(error_length)
echo "tel is to long"
else
echo "tel must numeric"
end
我可以这样吗?
答案 0 :(得分:3)
您可以为每个验证者在单独的哈希中传递message
:
validates :tel,
presence: { message: 'is needed' },
length: { minimum: 10, maximum: 11, too_long: 'is too long' },
numericality: { only_integer: true, message: 'must be numeric' }
详细了解presence,length和numericality验证程序。
答案 1 :(得分:1)
执行此操作的一种方法是为每种验证类型(在模型中)定义方法,如下所示:
validate :chech_length
def chech_length
if tel.length < 10 || tel.length > 11
errors.add(:base, "tel is too long!")
end
end
validate :check_if_present
def check_if_present
if tel.blank?
errors.add(:base, "tel must be present!")
end
end
等...
希望这会有所帮助。