Вывод HTML в шаблон RJ ERB - PullRequest
       20

Вывод HTML в шаблон RJ ERB

1 голос
/ 26 августа 2011

Это может быть что-то глупое, но я не могу заставить его работать вообще ...

У меня есть holiday.js.erb, который генерирует некоторый javascript для обновления страницы при вызове ajaxсделанный.Исходный файл выглядит следующим образом:

$('semantic').replace('<div id="semantic"></div>');
<%
    html = '<table class="ajax">'
    html += "<tr><td>EU - 27</td><td>#{@eu.value.value} days</td></tr>"
    html += "<tr><td>#{@source.location.value}</td><td>#{@source.value.value } days></td></tr>" unless @source.location.value.blank?
    html += "<tr><td>#{@cv.country.name}</td><td>No Data Available</td></tr>" if @source.location.value.blank?
    html += "<tr><td>#{@target.location.value}</td><td>#{@target.value.value } days></td></tr>" unless @target.location.value.blank?
    html += "<tr><td>#{@vacancy.country.name}</td><td>#{@target.value.value } days></td></tr>" if @target.location.value.blank?
    html += "</table>"
%>
$('semantic').insert('<%= escape_javascript(html) %>');

Я могу очистить код в браузере, но последняя строка вызывает у меня проблемы.Он кодирует материал в html в html-сущности, и я не хочу этого, потому что он нарушает JavaScript.Ответ в Fiddler выглядит следующим образом:

$ ('семантический'). Replace ('');$ ( 'Семантический'). Вставить (»

ЕС - 27 28 дней ГБ Нет данных Великобритания 29 дней> ');

Как запретить странице кодировать переменную html?Я пытался использовать <%!html%> но это ничего не возвращает.

1 Ответ

3 голосов
/ 26 августа 2011

исправили, решение было

$('semantic').replace('<div id="semantic"></div>');
<%
    html = '<table class="ajax">'
    html += "<tr><td>EU - 27</td><td>#{@eu.value.value} days</td></tr>"
    html += "<tr><td>#{@source.location.value}</td><td>#{@source.value.value } days></td></tr>" unless @source.location.value.blank?
    html += "<tr><td>#{@cv.country.name}</td><td>No Data Available</td></tr>" if @source.location.value.blank?
    html += "<tr><td>#{@target.location.value}</td><td>#{@target.value.value } days></td></tr>" unless @target.location.value.blank?
    html += "<tr><td>#{@vacancy.country.name}</td><td>#{@target.value.value } days</td></tr>" if @target.location.value.blank?
    html += "</table>"
%>
$('semantic').insert('<%=raw html  -%>');

Нашел решение здесь: Отключение экранирования HTML в шаблонах erb

...