Rails escape_javascript и remotipart

При замене html на jquery и rails (протестировано на 4.0.4) работает следующее:

Содержание replace.js.erb

$('#my_div').html("<%= j(render 'my_partial') %>");

Содержание _my_partial.html.erb

"This" works
<%= '"This" also works' %>

Однако происходит сбой, когда replace.js.erb отображается в ответ на отправку файла ajax с использованием гема remotipart (1.2.1), как показано ниже.

Содержимое create.html.erb

<%= form_for @my_model, :html => {:remote => true} do |f| %>
  <%= f.file_field :some_file %>
  <%= f.submit %>
<% end %>

Это вызывает следующую ошибку JavaScript в браузере, потому что кавычки не экранированы правильно.

SyntaxError: неожиданный идентификатор

Ответ сервера: $('#my_div'). Html("\"This\"работает \n"This" fails\n");

Обратите внимание, что если я отправляю без выбора файла, ошибка javascript не возникает, и он корректно отображается заново. Похоже, что remotipart не вызывается, когда файл не выбран, возможно, потому что многочастная форма не требуется.

1 ответ

Я наконец-то решил эту проблему, попробовав что-то вроде:

$("#my_div").html("<%= escape_javascript(render :partial => 'my_partial').gsub('&quot;', "'") %>");
Другие вопросы по тегам