2010-08-22 22 views
5

Ben kaynak kodunda aşağıdaki içeriği gerçekleştirmek için çalışıyorum:Raylar + Haml: Etiket parametresinin nasıl çıkarılacağı?

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

Haml birinin izlerini kaçan olmadan.

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

Ben Haml ile yapabilirsiniz tek yolu herhangi Görünüm Sağlayanlar kullanmadan :plain filtresi ve kod gömmek HTML kullanmaktır Şu anda

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

üretir. Bunu nasıl düzeltebilirim? Çünkü üçüncü taraf sözdizimi kongre kuramını takip etmek zorunda olduğum için

Buna ihtiyacım: JavaScript Micro-Templating

Referans:

Haml reference

cevap

4

Sen Haml içinde kodlama söylüyorlar ama parantez Erb gösterir.

  • Aşama 1. Normal Yakut interpolasyon deneyin:

    %div{ :id => "box_#{id}" } 
    
  • Adım 2. Güncelleme hiçbir adım 2.

vardır: Ben bu cevabı yazdığımda, daha önce JS şablon çerçeve kullanımını kesmişti. Bunun neden gerekli olduğunu anlamadığım için özür dilerim.

+0

Üzgünüm ama kodu yok.Haml kodluyorum ve kaynak kodunda <%=id%> unescaped ihtiyacım var (Micro-Templating link sözdizimini açıklıyor). David, bunu nasıl düzeltebilirim? – ep3static

+0

Kafam karıştı. Bir dilin * başka bir * şablon dili kullanılarak ayrıştırılması için bir şablon oluşturuyorsunuz? Bu rotaya gideceğimi sanmıyorum. –

+0

Doğru :) Muhtemelen Micro-Templating linki daha iyi açıklayacaktır. – ep3static

2

Temel olarak, sadece bir deyim için HAML kullanmayın. Örneğin, şu anda haml böyle bir şey yaptığını varsayarak:

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

yerine yapın:

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

Daha sonra, doğru haml olarak komut dosyası etiketi yorumlayacaktır kullanmadığınız beri Bir sonraki satırı başlatmak için herhangi bir %, #, vb., bu satırı düz metin olarak yorumlayacak ve iletecektir. Benim için iyi çalışıyor gibi görünüyor ve seninkiyle çok benzer bir durumum var. Yapmam yaptığım tek şey jQote sayfasının head bu JavaScript ifadeye $ için % den etiketi (benim JavaScript çiftleşmiş için kullanıyorum çiftleşmiş motoru) değiştirmek oldu:

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

Bu şekilde % işaretleri Ruby yorumlayıcısını karıştırmaz. Son örnek şöyle olurdu:

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

İyi şanslar!

İlgili konular