2010-08-22 11 views
5

Próbuję wykonać następującą zawartość w kodzie źródłowym:Rails + Haml: Jak usunąć parametr tagu?

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

Bez żadnych oznak ucieczki w haml.

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

produkuje

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

Teraz jedynym sposobem można zrobić to z haml jest użycie :plain filtra i zakodować HTML bez używania żadnych Zobacz pomocników. Jak mogę to naprawić?

muszę tego powodu jestem zmuszony do tej konwencji z powodu trzeciej konwencji składni: JavaScript Micro-Templating

referencyjny:

Haml reference

Odpowiedz

4

Mówisz, że jesteś kodowania w haml, ale nawiasy wskazują Erb.

  • Etap 1. Spróbuj normalnego interpolacji Ruby:

    %div{ :id => "box_#{id}" } 
    
  • Krok 2. Jest Nie Krok 2.

Aktualizacja: Kiedy pisałem tę odpowiedź, nie użył ramy szablonów JS wcześniej. Moje przeprosiny za to, że nie grokowałem, dlaczego było to konieczne.

+0

Niestety ale nie mam kodu.Koduję w Haml i potrzebuję <%=id%> bez zmiany kodu źródłowego (łącze Micro-Templating wyjaśnia składnię). David, jak mogę to naprawić? – ep3static

+0

Jestem zdezorientowany. Generujesz szablon dla jednego języka do przeanalizowania przy użyciu * innego * języka szablonów? Nie sądzę, żebym poszedł tą drogą. –

+0

Dobrze :) Prawdopodobnie link do Micro-Templating wyjaśni to lepiej. – ep3static

2

Po prostu nie używaj HAML dla tego jednego zdania. Na przykład, zakładając, że robisz coś takiego w haml teraz:

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

Zamiast zrobić:

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

to zinterpretuje znacznika script jako haml poprawnie, ponieważ wtedy nie używasz dowolne %, # itp., aby rozpocząć następną linię, zinterpretuje ona tę linię jako zwykły tekst i przekazuje ją. Wydaje mi się, że działa dobrze dla mnie i mam bardzo podobny przypadek do twojego. Jedyną rzeczą, zrobiłem było zmienić jQote (silnik szablonów używam do mojego JavaScript szablonów) tag od % do $ z tym stwierdzeniem JavaScript w head strony:

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

W ten sposób % znaki nie mylić interpretera Ruby. Ostatecznym przykładem będzie:

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

Powodzenia!

Powiązane problemy