2016-09-29 13 views
1

У меня есть следующее правило проверки в моделиBind сообщение об ошибке на другой атрибут

validates :csv_fingerprint, uniqueness: { message: "CSV was already uploaded." } 

В представлении формы (simple_form), следующий код создает поле загрузки файла:

= f.input :csv, as: :file 

валидация работает, но сообщение об ошибке не отображается в поле загрузки. Я думаю, причина в том, что валидация для : csv_fingerprint и поле формы : csv.

Как я могу подтвердить правило проверки, что сообщение должно отображаться на поле : csv?

ответ

1

Вы можете использовать f.error:

= f.input :csv, as: :file 
= f.error :csv_fingerprint 

Также вы можете проверить ошибки для атрибута, как это:

errors_for(@model, :attribute) 

Вы можете перебирать их и отображать их.

Еще один способ получить ошибки объекта: @model.errors.on(:attribute)

+0

Спасибо. Таким образом, в валидаторе нет возможности указать атрибут message. Вы должны пойти в точку зрения. – Christian

+0

@ Христиан - это вопрос? Потому что я не уверен, могу ли я ответить на него в любом случае :) –

+1

@ Валидаторы модели христиана обычно работают, грубо говоря, на столбцах базы данных. И ответственность за то, как вы отображаете ошибки проверки, лежит на уровне представления. –