2010-12-09 43 views
21

Existe-t-il un meilleur moyen de convertir les éléments suivants en HAML?Nom de classe dynamique dans HAML

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

mieux que je peux faire est:

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

Mais il semble maladroit. Et .flash#{ key}= value ne semble pas avoir raison?!?

Répondre

18

Si vous cherchez quelque chose tous très légèrement terser, vous pouvez le faire maintenant en haml:

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

Un peu mieux:

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

.. Non ne fonctionne pas. me donne: '

Resource was successfully created.
' – Meltemi

+1

Oups, désolé. J'oublie de mettre des guillemets autour de "flash". S'il vous plaît voir la réponse mise à jour. Je pense que ça va marcher maintenant. – bowsersenior

+0

en effet, il le fait! Merci. garder cela ouvert pour un autre jour ou deux pour voir si quelqu'un peut trouver une façon plus succincte. La plupart du temps, il y a des curiosités s'il y a un moyen d'y parvenir avec la balise * supposée 'div' que HAML est si désireux d'exploiter ... – Meltemi

6

Ajout d'une variation sur le thème :

ce erb

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

pourrait être

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

similaire à How do I make dynamic ids in Haml?