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('"', "'") %>");