在相应字段旁边显示rails自定义验证错误

时间:2014-12-09 07:24:31

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

我开始学习有关rails中的验证器并遇到以下问题。

我在应用程序上有一系列表单字段,我正在处理。我注意到如果我使用validates :pin_number, length: { is: 6 }之类的rails本地验证器,它会在相关的表单字段旁边放一条漂亮的小消息:<span class="error">is the wrong length (should be 6 characters)</span>太棒了!

但是,当我在下面创建自定义验证器以检查:pin_number的值时,我的错误消息虽然出现在顶部,却没有出现在违规字段旁边。

#from my controller hp_id.rb
validates :pin_number, pin: true

#from my custom validator in app/validators/pin_validator.rb
class PinValidator < ActiveModel::EachValidator
  def validate_each (record, attribute, value)
    if value > 9999
     record.errors[attribute] << (options[:message] || "validator working")
    end
  end
end

我在网上浏览了一下,虽然我确实找到了编辑输入字段以显示验证错误的建议,但这种方法似乎很邋by,因为某些rails验证器已经具有此功能而没有对视图进行任何修改。

我的问题如何利用现有框架使用我自己的自定义验证器呈现<span class="error">消息?

任何洞察力都赞赏!

1 个答案:

答案 0 :(得分:0)

在您的情况下,您可以在一行中写下所有内容并以这种方式添加自定义消息:

#Model
validates_numericality_of :pin, :only_integer =>true, 
                          :less_than => 9999, 
                          :message => "Your custom message"