Я хочу визуализировать частичное в своем файле js.erb, чтобы я мог использовать сгенерированный HTML в своем Javascript.Вот пример кода, который можно использовать в качестве примера.
create.js.erb
$(function(){
var html = "<%= render(:partial => `pretty_box`) %>";
$("#container").prepend(html);
});
_pretty_box.html.haml
.pretty_box_container
.title
Something Pretty
Когда рендерит create.js.erb, я получаю следующее:
$(function(){
var html = "<div class="pretty_box_container>
<div class="title">
Something Pretty
</div>
</div>";
$("#container").prepend(html);
});
Как и следовало ожидать, это нарушает мой JavaScript.Мне нужно убрать пробел из результата рендеринга частичного.Проблема заключается в том, что возвращаемое значение render
представляет собой объект ActiveSupport::SafeBuffer
, который переопределяет все «небезопасные» методы (см. UNSAFE_STRING_METHODS ), включая strip
.Поэтому вызов render(:partial =>
pretty_box ).strip
HTML-кодирует всю строку.
Я пробовал все виды комбинаций, используя методы html_safe
или to_s
.Они не работают, потому что они возвращают self
, и использование raw
также не работает, потому что это вызывает to_s.html.safe
.
Я знаю, что могу добавить >
и <
символы к моемуЧерт возьми, но я не хочу делать это для каждой строки каждого частичного.