f.error_messages показывает только первое сообщение об ошибке в базе - PullRequest
1 голос
/ 01 сентября 2011

Я упростил свою задачу до следующего: f.error_messages отображает только первую ошибку на базе.Для репликации выполните следующие действия:

errors.add_to_base "Error 1"
errors.add_to_base "Error 2"

Затем распечатайте сообщения в представлении (т. Е. <%= f.error_messages %>) и обратите внимание, что появляется только «Ошибка 1», но не «Ошибка 2»!Далее, изучите errors.full_messages и заметьте, что он действительно содержит обе ошибки.Его значение равно ["Error 1", "Error 2"].

Может кто-нибудь повторить эту проблему?Что еще более важно ... может кто-нибудь сказать мне, как заставить f.error_messages напечатать ВСЕ ошибки?

Спасибо!

ОБНОВЛЕНИЕ : На самом деле, у меня есть класс A, класс has_oneB. И я добавляю в базу на класс B, и вызываю f.error_messages на класс A. Похоже, что если я сделаю следующее, он покажет полный список ошибок из класса B:

<% class_a.fields_for :class_b do |class_b| %>
  <%= class_b.object.errors.full_messages.join("<br />") %>
<% end %>

Однако, если я вызываю errors для родителя, он не работает.

<%= class_a.object.errors.full_messages.join("<br />") %>

Это отображает только первую ошибку из класса B (то есть «Ошибка 1»).Очевидно, класс A accept_nested_attributes_for: class_b.

Наконец, я на Rails 2.3.11.

1 Ответ

1 голос
/ 01 сентября 2011

Вы должны обрабатывать его как массив, а не как одно значение, которое вы можете напечатать.

<% f.error_messages.each do |msg| %>
  <%= msg %>
<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...