Я хочу отрендерить партиал в моем файле 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 = "
Something Pretty
Как и следовало ожидать, это нарушает мой javascript. Мне нужно удалить пробелы из результата рендеринга частичного. Проблема в том, что возвращаемое значение render
- это объект ActiveSupport :: SafeBuffer
, который отменяет все "небезопасные" методы (см. UNSAFE_STRING_METHODS ), включая strip
. Поэтому вызов render (: partial =>
pretty_box ). strip
HTML- кодирует всю строку.
Я пробовал всевозможные комбинации, используя методы html_safe
или to_s
. Они не работают, потому что возвращают self
, и использование raw
тоже не работает, потому что е он вызывает to_s.html.safe
.
Я знаю, что могу добавить символы >
и в свой HAML, но я не хочу делать это для каждой строки каждого фрагмента.