2010-09-20 14 views
2

à rubis que vous pouvez faire bloc conditionnel comme siblocs conditionnels dans haml

block do |n| 
    puts n 
end if foo == bar 

qui se traduirait par erb comme

<% block do |n| %> 
    <%= n %> 
<% end if foo == bar %> 

est-il un moyen d'y parvenir dans haml autre que l'emballage du bloc dans une condition?

+0

Vous pouvez le faire en Ruby, mais vous auriez utilisé, à mon avis , et de l'avis de beaucoup d'autres, mauvais style: voir [Guide de style Ruby de GitHub] (https://github.com/styleguide/ruby) qui dit d'éviter de faire du chaînage. –

+0

Même si je devais dire "ok, le style' do' ... 'end.if' est lisible" (ce n'est pas le cas), je grimace pour le voir dans Haml. Je vais donner quelques alternatives dans les réponses ci-dessous. –

Répondre

8
- block do |n| 
    = n 
- end if foo == bar 

Haml ne permet end dans ce cas.

+0

Neat! Je ne le savais pas. Upvoted! –

+0

Vous avez simultanément répondu à la question et fait saigner les yeux. S'il vous plaît, pour l'amour de Haml, n'encouragez pas cela! :) –

0

S'il vous plaît mettre le if à l'avant - il le rend plus lisible:

- if foo == bar 
    - block do |n| 
    = n 

Et, si cela se produit fréquemment, envisagez d'écrire une aide Haml personnalisée.

(je l'ai mentionné la GitHub Ruby Style guide ci-dessus dans un commentaire. Si vous search Google for 'ruby do end chaining' vous verrez de nombreux guides de style qui vous recommandons d'utiliser cette construction.)