Частичный рендеринг внутри js.erb. Можно ли получить необработанную строку, чтобы я мог удалить пробелы?

Я хочу отрендерить партиал в моем файле 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
"; $("#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 .

Я знаю, что могу добавить символы > и в свой HAML, но я не хочу делать это для каждой строки каждого фрагмента.

6
задан John 29 August 2011 в 06:42
поделиться