Ошибки Rails НЕ отображаются в f.error_messages, но в ошибках они - PullRequest
1 голос
/ 10 августа 2009

У меня есть ошибки в модели, которые отображаются в представлении при доступе с @ model.errors. Тем не менее, они не появляются, если я пытаюсь сделать

  <%form_for @applicant do |f|%>
      <%=f.error_messages%> 
      This is zero, freakily: <%=f.error_messages.length%> 
      But this is not: <%=@applicant.errors.length%>

однако ошибки присутствуют, если я делаю

@applicant.errors.each

Любые предложения относительно того, где я должен искать, чтобы решить эту проблему? Это абсолютно странно ...

Форма работает совершенно иначе.

Редактировать: Благодаря ответу Скотта я понял, что происходит. Я упростил вопрос здесь о SO, но это была проблема. Я действительно делал это:

<%form_for @applicant.thinger do |f|%>

и в этом заключается проблема. Метод error_messages_for, который вызывает form_helper, должен иметь глубину в один уровень (то есть переменную экземпляра, такую ​​как @applicant, которую он затем переводит в: Applicant, а не как @ Applic.status). Спасибо!

Ответы [ 2 ]

2 голосов
/ 10 августа 2009

В этом примере f это не объект @applicant, это объект построителя форм. То, что вы хотите, это что-то вроде:

<%= error_messages_for 'applicant' %>

См. Rails API Документы .

0 голосов
/ 02 мая 2013

Используйте это .... Это сработало для меня

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