2010-08-22 3 views
5

Я пытаюсь выполнить следующее содержание в исходном коде:Rails + Haml: Как изменить параметр тега unescape?

<div id="box<%=id%>"></div> 

Без избежать каких-либо признаков в Haml.

%div{ :id => "box_<%=id%>" } 

производит

<div id='box_&lt;%=id%&gt;'></div> 

Прямо сейчас единственный способ, которым я могу сделать это с Haml является использование :plain фильтра и жёстко HTML без использования каких-либо Помощники. Как я могу это исправить?

мне это нужно, потому что я вынужден следовать этому соглашению из-за третьей стороной синтаксиса конвенции: JavaScript Micro-Templating

Ссылка:

Haml reference

ответ

4

Вы говорите, что вы кодирования в Haml, но в скобках указывается Erb.

  • Шаг 1. Попробуйте нормальные Рубиновые интерполяции:

    %div{ :id => "box_#{id}" } 
    
  • Шаг 2. Там нет ни одного шага 2.

Update: Когда я писал этот ответ, я не использовал рамки шаблонного JS прежде. Приношу свои извинения за то, что вы этого не сделали.

+0

Извините, но я не код.Я код в Haml и нуждаюсь в <%=id%> unescaped в исходном коде (ссылка на Micro-Templating объясняет синтаксис). Дэвид, как я могу это исправить? – ep3static

+0

Я в замешательстве. Вы создаете шаблон для одного языка для синтаксического анализа, используя * другой язык шаблонов? Я не думаю, что поеду по этому пути. –

+0

Право :) Возможно, Micro-Templating link объяснит это лучше. – ep3static

2

В принципе, просто не используйте HAML для этого одного утверждения. Например, если вы делаете что-то подобное в Haml прямо сейчас:

%script#template(type="text/html") 
    %div{ :id => "box_<%=id%>" } 

Вместо этого сделать:

%script#template(type="text/html") 
    <div id="box_<%=id%>"></div> 

Он будет интерпретировать тег сценария как Haml правильно, то, так как вы не используете любой %, # и т. д., чтобы начать следующую строку, он будет интерпретировать эту строку как обычный текст и передать ее. Кажется, все отлично работает для меня, и у меня очень похожий случай с твоим. Одна вещь, которую я сделал было изменить jQote (шаблонный движок я использую для моего Javascript шаблонного) тег из % в $ с этим утверждением Javascript в head страницы:

%script(type="text/javascript") 
    $(function() { $.jqotetag('$'); }); 

этак % знаки не путают интерпретатор Ruby. Таким образом, окончательный пример:

%script#template(type="text/html") 
    <div id="box_<$=id$>"></div> 

Удачи вам!

Смежные вопросы