在rails上自定义错误验证

时间:2013-02-28 07:45:15

标签: ruby-on-rails

如何在控制器上将错误消息添加到@errors,然后在视图中显示它:

<%= @question.errors[:tag][0] %>

带有标签的

不是模型元素。

2 个答案:

答案 0 :(得分:1)

看看this part of the Rails validation guide。它们通过创建自定义验证器来工作,该验证器只是将所需的错误消息附加到所需的散列条目。

在您的情况下,这可能如下所示:

class Question < ActiveRecord::Base
  validates_with :tag_validator
end

class TagValidator < ActiveModel::Validator
  def validate(question)
    unless question.special?
      question.errors[:tag] << 'Not special enough.'
    end
  end
end

答案 1 :(得分:0)

在rails中处理错误消息分3步完成,即

  1. 使用rails-validation-helpers验证活动记录对象或创建@chaleyc
  2. 指定的自定义验证程序
  3. 使用AR validation methods
  4. 验证ActiveRecord(AR)对象
  5. 在视图上显示错误,创建视图助手是最佳做法notices and errors on rails3
  6. 这是一个很好的rails-cast让你入门