2014-12-09 6 views
0

Я приступаю к изучению валидаторов в рельсах и столкнулся с следующей проблемой.Отображение ошибок проверки правильности рельсов рядом с соответствующим полем

У меня есть ряд полей формы в приложении, над которым я работаю. Я заметил, что если я использую валидатор, родной для рельсов, например validates :pin_number, length: { is: 6 }, он отправляется и помещает небольшое небольшое сообщение рядом с полем формы: <span class="error">is the wrong length (should be 6 characters)</span> Awesome!

Однако, когда я создал пользовательский валидатор ниже, чтобы проверить значение: 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 

Я огляделся в Интернете и, в то время как я нашел предложения для редактирования поля ввода для отображения ошибок проверки, такой подход казался неаккуратным, как некоторые рельсы валидаторов уже есть эта функциональность без каких-либо изменений в представление.

Мой вопрос: Как использовать существующую инфраструктуру для визуализации сообщения <span class="error"> с помощью собственного пользовательского валидатора?

Любое понимание оценено!

ответ

0

В вашем случае вы можете написать все в одной строке, и добавить свое собственное сообщение таким образом:

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

Спасибо за ответ. В конечном счете, мое намерение состоит в том, чтобы добавить настраиваемое сообщение к настраиваемому валидатору, а не к существующему. Тест больше, чем меньше, сам по себе, просто удобный способ увидеть, работает ли он. – neanderslob