2013-06-23 11 views
6

Próbuję umieścić niektóre (nie renderowane) komentarze wewnątrz instrukcji If/Else w jednym z moich widoków Haml, ale wydaje się powodować problemy.Dodatkowe linie ruby ​​wewnątrz Jeśli instrukcje sprawiają problemy w Haml?

chciałbym mieć następujący kod:

- # Stuff like ______ activates the if statement 
- if @condition 
    (Some code) 

- # Stuff like _____ activates the else statement 
- else 
    (Some other code) 

Niestety Szyny wyrzuca mi błąd:

Got "else" with no preceding "if" 

Jeśli usunąć 'innego' komentarz, tzn

- # Stuff like ______ activates the if statement 
- if @condition 
    (Some code) 

- else 
    (Some other code) 

Wszystko działa zgodnie z przeznaczeniem. Problemem NIE jest sam komentarz. Muszę usunąć aktualną linię kodu Ruby (łącznie z łącznikiem), aby uzyskać renderowanie. Oznacza to, że nawet jeśli zostawię pustą linię poprzedzoną łącznikiem, tak:

- # Stuff like ______ activates the if statement 
- if @condition 
    (Some code) 

- 
- else 
    (Some other code) 

Występuje ten sam błąd. Inne potencjalnie istotne szczegóły: później jest więcej kodu, który jest na tym samym poziomie wcięcia co instrukcja if/else (nie wewnątrz), a cała sprawa jest zagnieżdżona w formularzu. Czy ktoś mógłby mi wytłumaczyć, co się dzieje? Dzięki wielkie!

P.S. To jest moje pierwsze pytanie, więc jeśli przedstawię to niewłaściwie, proszę dać mi znać.

+0

Co się stanie, jeśli spróbujesz wcięcia głębszy komentarz zanim jeszcze? –

Odpowiedz

9

HAML reference says:

Ruby blocks, like XHTML tags, don’t need to be explicitly closed in Haml. Rather, they’re automatically closed, based on indentation. A block begins whenever the indentation is increased after a Ruby evaluation command. It ends when the indentation decreases (as long as it’s not an else clause or something similar).

Więc, kiedy zmniejszyć wcięcie, i że linia nie jest else klauzula (lub podobny, elsif na przykład), że if wykończenia - end dodaje niejawnie. Wtedy oczywiście linia else jest nieprawidłowy

Twoje rozwiązanie jest wciąć komentarz, albo przed albo po klauzuli else:

- if @condition 
    - # Stuff like ______ activates the if statement 
    (Some code) 

- else 
    - # Stuff like _____ activates the else statement 
    (Some other code) 
+0

To ma sens. Dzięki wielkie! –

+0

niesamowite wyjaśnienia ... po prostu uwielbiamy :)) –