2010-12-09 12 views
21

Aşağıdakileri HAML'ye dönüştürmenin daha iyi bir yolu var mı?Dinamik sınıf adı HAML içinde

<% flash.each do |key, value| %> 
    <div class="flash <%= key %>"><%= value %></div> 
<% end %> 

En Yapabileceğim geçerli:

- flash.each do |key, value| 
    %div{:class => "flash " + key.to_s}= value 

Ama garip görünüyor. Ve .flash#{ key}= value doğru görünmüyor mu?!?

cevap

18

her-so-biraz terser bir şey arıyorsanız ediyorsanız, Haml şimdi bunu yapabilirsiniz:

- flash.each do |key, value| 
    .flash(class=key)= value 
12

Biraz daha iyi:

- flash.each do |key, value| 
    .flash{:class => key}= value 
+0

için

=flash.each do |key, value| .alert{:class => "alert-#{key}"} =value 

benzer olabilir. bana verir: '

Resource was successfully created.
' – Meltemi

+1

Oops, üzgünüm. Flaş hakkında alıntı yapmayı unuttum. Lütfen güncellenmiş cevaba bakınız. Şimdi çalışacağını düşünüyorum. – bowsersenior

+0

gerçekten de öyle! Teşekkürler. Bunu başka bir gün için açık tutmak, herhangi birinin daha özlü bir yol bulabileceğini görmek için. Bunu başarmak için bir yol varsa, eğer HAML istismar etmek için çok istekli * varsayılmış * 'div' etiketi ile ... – Meltemi

6

temada farklı Ekleme :

bu erb

<% flash.each do |key, value| %> 
    <div class="alert alert-<%= key %>"><%= value %></div> 
<% end %> 

Hayır .. çalışmıyor How do I make dynamic ids in Haml?