Ошибки не отображаются при отправке формы через AJAX - PullRequest
0 голосов
/ 28 июля 2011

У меня есть многомодельная отправка формы, которая добавляет все ошибки модели в один хеш с именем @errors.При отправке с использованием обычной записи HTML ошибки правильно отображаются на мой взгляд:

new.html.erb

<div id="error_explanation">
<% if @errors && @errors.any? %>
   <% @errors.full_messages.each do |msg| %>
   <h3><%= msg %></h3>
   <% end %>
<% end %>
</div>

Однако при отправке с использованием AJAX ничего не отображается, яможет проверить, что хэш содержит значения при выводе в журнал.

create.js.erb

<% if @errors && @errors.any? %>
   <% @errors.full_messages.each do |msg| %><%= logger.info msg %><% end %> // Works!!
   $('#error_explanation').html('<% @errors.full_messages.each do |msg| %><%= msg %><% end %>'); // Doesn't Work
<% end %>

Ответы [ 2 ]

2 голосов
/ 28 июля 2011

Вы должны экранировать текст:

$('#error_explanation').html('<%= escape_javascript @errors.full_messages.join("<br/>") %>');

Если ошибка сохраняется, укажите полученный js.

1 голос
/ 28 июля 2011

Я думаю <% @errors.full_messages.each do |msg| %><%= msg %><% end %> должен вернуть массив.

Вы можете использовать что-то вроде

<% @errors.full_messages.each do |msg| %>
   $('#error_explanation').append(msg);
<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...