Почему моя форма повторно отображается с помощью '& lt; div class = & ldquo; field_with_errors & ldquo; & gt;'; элемент? [Дубликат]

Примером этого исключаемого исключения является: Когда вы пытаетесь проверить что-то, это 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 .

5
задан Rapture 3 January 2012 в 16:17
поделиться

1 ответ

Метод, описанный в опубликованной вами ссылке, по-прежнему используется сегодня с разработчиками форм ванили в 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">&nbsp;
      #{instance.error_message.join(',')}</small></div).html_safe
  else
    %(<div class="form-field error">#{html_tag}<small class="error">&nbsp;
      #{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 на нем здесь .

Удачи !

7
ответ дан Hector Villarreal 27 August 2018 в 22:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: