Поэтому я пытаюсь использовать jQuery для вставки данных из вызова ajax.
Я на самом деле использую плагин jquery.form, и мне отправляется форма ajax с dataType: 'script'
.
Ответ является выражением jquery, которое содержит тег <%= javascript_escape(render ...) %>
erb (аналогично тому, что предписывает эпизод 136 railscasts). Однако конечный результат заключается в том, что полный текст рендера вставляется так, как если бы это был контент для вставки на страницу в виде текста, а не элементов dom.
Может ли быть причиной того, что в начале рендера были некоторые символы новой строки?
Дом текст: "\n \n <li>....</li>"
Я также пытался заставить jQuery просто прочитать ответ как скрипт и выполнить его, и использовал основанный на прототипе материал rjs, эффект тот же, текст вставляется в dom. Существуют ли причины, по которым такое поведение может возникнуть?
Немного пояснений:
Мой response.js.erb
jQuery("#content").append("<%= escape_javascript(render(:partial => "widgets")) %>");
jQuery("#information").text("Finally, something happened!");
Полный текст внутри вызова append () вставляется как текст в содержимое #.
Обновление:
Я провел некоторое исследование этой проблемы. Оказывается, причина, по которой rails экранирует символы <>, заключается в том, что он думает, что рендерит обычный файл .html. Причина в том, что он не указывает на то, что идет .js, потому что сообщение сделано с использованием iframe (сообщение содержит файл). Если я добавлю .js в конец запроса, я смогу сделать respond_to do |format| format.js
, однако он не поддерживает сообщения http. Есть ли способ настроить его так, чтобы он принимал сообщения по запросу .js для действия?