在Rails中的ruby中的每个不同的错误验证中设置自定义消息

时间:2018-07-17 11:24:14

标签: ruby-on-rails ruby

让我说我已经在模型中设置了这样的验证

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

我可以这样吗?

2 个答案:

答案 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' }

详细了解presencelengthnumericality验证程序。

答案 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

等...

希望这会有所帮助。