自定义Rails验证不添加' field_with_errors'包装到输入

时间:2016-04-07 16:46:51

标签: ruby-on-rails validation ruby-on-rails-4

我正在使用需要进行自定义验证的表单在Rails 4网站上工作。但是当验证标准失败并且显示错误消息时,我检查的输入字段没有给出field_with_errors包装器。正在验证的所有其他字段都正确地获取包装器,但它们的验证是对每个属性的简单存在检查。

如何使用自定义验证添加包装器?

其他说明:如果可能的话,我只想显示一次错误消息,但要突出显示这两个字段。

在我的模特中:

validate :at_least_one_apply_method

def at_least_one_apply_method
  if [self.apply_url, self.application_instructions].reject(&:blank?).size == 0
    errors[:base] << ("Please provide at least one: Where to Apply or Applications Instructions.")
  end
end 

让我知道所需的任何其他信息。谢谢!

2 个答案:

答案 0 :(得分:3)

您正在向错误[:base]添加自定义错误消息。您需要将其添加到要包装的字段中,例如

errors[:apply_url] << ("Please provide at least one: Where to Apply or Applications Instructions.")
errors[: application_instructions] << ("Please provide at least one: Where to Apply or Applications Instructions.")

答案 1 :(得分:0)

如果 object.errors 哈希具有该字段名称的密钥,则错误消息仅绑定到字段。 但是,您要使用 base 键添加自定义消息。

所以你可以这样做

validate :at_least_one_apply_method

def at_least_one_apply_method
  [self.apply_url, self.application_instructions].map{|field| field.blank? ? (self.errors.add("field","Please provide at least one: Where to Apply or Applications Instructions.")
  ") : ''}
end