Примером этого исключаемого исключения является: Когда вы пытаетесь проверить что-то, это null.
Например:
string testString = null; //Because it doesn't have a value (i.e. it's null; "Length" cannot do what it needs to do)
if (testString.Length == 0) // Throws a nullreferenceexception
{
//Do something
}
Время выполнения .NET исключение NullReferenceException при попытке выполнить действие над чем-то, что не было инстанцировано, т.е. код выше.
По сравнению с ArgumentNullException, которое обычно выбрано как защитная мера, если метод ожидает, что то, что происходит
Дополнительная информация находится в C # NullReferenceException и Null Parameter .
Метод, описанный в опубликованной вами ссылке, по-прежнему используется сегодня с разработчиками форм ванили в Rails .
Итак, если вы хотите обернуть свой ввод, как вы упомянули, создайте метод, переопределяющий ActionView::Base.field_error_proc
в вашем файле environment.rb
, например:
ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
if instance.error_message.kind_of?(Array)
%(<div class="form-field error">#{html_tag}<small class="error">
#{instance.error_message.join(',')}</small></div).html_safe
else
%(<div class="form-field error">#{html_tag}<small class="error">
#{instance.error_message}</small></div).html_safe
end
end
В приведенном выше коде я обматываю свой ввод (# {html_tag}) в <div class="form-field error>..</div>
, который используется по умолчанию для ZURB Foundation . Я также использую тег <small class="error">...</small
(который также является фундаментом по умолчанию), чтобы отображать сообщения под входом.
Однако я рекомендую использовать построитель форм-форм, например simple_form . Он очищает ваш код просмотра и немного отличается от уровня настройки.
Проверьте railscast на нем здесь .
Удачи !