escape_javascript удаляет угловые скобки - Решения? - PullRequest
0 голосов
/ 14 июля 2011

Я оснащаю приложение rails 3 (версия 3.0.9) для использования AJAX и jQuery для плавной обработки пользовательских сообщений.Я хотел бы, чтобы div #users_info обновлялся после отправки сообщения.Я могу заставить это работать, но содержимое div не отображается должным образом.В частности, код jquery в create.js.erb:

 $("#right_bar").html(
'<%= escape_javascript(render :partial => 'shared/user_info') %>'
 );

Результатом является вывод div пользовательской информации:

 <div id=user_info> <h1>    
 <a href=/users/101>Example Usera> h1>  
 46 posts <br>  
 4 discussions <br> 
 Following 2 topics <br>    
 Joined 8 days ago.div>

Обратите внимание, как функция escape_javascript удаляет все ведущие угловые скобки на концетеги в html (становится>, становится h1>).Как я могу заставить escape_javascript, чтобы избежать этого?Я думаю, что это весь соответствующий код, но может публиковать больше, если это необходимо.

ОБНОВЛЕНИЕ

Мне было интересно, возможно ли использование to_json будет частью решения.код:

<% = escape_javascript ((render: частичный => 'shared / user_info'). to_json)%>

приводит к тому, что теги html не уничтожаются.Однако я не знаю, как преобразовать обратно из JSON для вывода желаемого HTML.Просто подумал, что это может быть правильным началом, но я не уверен, как это закончить

Ответы [ 3 ]

0 голосов
/ 15 июля 2011

Я нашел решение.просто оберните содержимое escape_javascript (содержимое) в escape_javascript ("# {}").

 $("#right_bar").html(
'<%= (escape_javascript("#{(render :partial => 'shared/user_info')}")).html_safe %>'
 );

Я добавил html_safe в конце, чтобы рельсы не делали угловые скобки буквальными.Теперь HTML-теги проходят правильно, и все правильно отображается в браузере.

0 голосов
/ 09 августа 2011

Попробуйте это:

$("#right_bar").html(
   "<%= escape_javascript(render :partial => 'shared/user_info') %>"
);
0 голосов
/ 14 июля 2011

Вы, вероятно, на более старой версии рельсов.Релиз ранее в июне вызвал эту проблему.Обязательно обновите текущую версию в ветке, в которой вы находитесь (2.3.12, 3.0.9 или 3.1.0.rc4), и она должна работать.

...