Я упростил свою задачу до следующего: 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.