2010-12-09 4 views
21

Есть ли лучший способ конвертировать следующее в HAML?Динамическое имя класса в HAML

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

Лучшее, что я могу сделать, это:

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

Но мне кажется неуклюжим. А .flash#{ key}= value, похоже, не прав?!?

ответ

18

Если вы ищете что-то каждый так немного terser, вы можете сделать это сейчас в Haml:

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

Немного лучше:

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

неа .. не работает. дает мне: `

Resource was successfully created.
` – Meltemi 2010-12-09 05:29:09

6

Добавление вариацию на тему :

это эрб

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

может быть

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

похож на How do I make dynamic ids in Haml?