Rails - escape_javascript без всех \ n \ n \ n \ n \ n - PullRequest
1 голос
/ 21 декабря 2010

Я использую escape_javascript для возврата партиала в браузер через ajax.

Что-то вроде:

$("#inject").html("<%=escape_javascript(render :partial =>"feed/index")%>");

Проблема в том, что escape_javascript выводит все виды потерянного пространства, например

\n\n\n\n\n                \n

Есть ли в Rails какой-нибудь способ более эффективно использовать escape_javascript? Не нужно \ n или длинные пробелы?

Спасибо

Ответы [ 2 ]

3 голосов
/ 21 декабря 2010

Не существует стандартного Rails-способа сделать это.Вы можете просто удалить его самостоятельно, прежде чем передать его escape_javascript следующим образом:

$("#inject").html("<%= escape_javascript((render :partial => 'feed/index').squeeze(" ").gsub(/[\n\t]/,'')) %>");

Я уверен, что есть приятное регулярное выражение, которое сделает это лучше, но это будет довольно близковредить вашему HTML.Gsub заменяет новые строки и вкладки ничем.Метод squeeze заменит несколько вхождений пробелов только одним пробелом.Вы не хотите удалять все пробелы, потому что они, вероятно, намеренно встречаются в вашем HTML.

0 голосов
/ 08 января 2016

Я собираюсь возродить этот поток, так как считаю, что здесь есть неправильное представление.

Метод escape_javascript, который также может быть сокращен до j, не должен отображать любые экранированные разрывы строк (\ n) при использовании с jQuery append, prepend, html или подобными функциями.

Наиболее вероятная ситуация заключается в том, что ваш обработанный частичный "feed / index" имеет другой частичный элемент, которыйтакже сбежал.Это означает, что вы javascript дважды избегаете разрывов строк, что приводит к их неправильной интерпретации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...