2012-05-21 2 views
6

Мне нужно использовать некоторые помощники блока руля внутри атрибута элемента. Как я могу получитьПомощники блока ручек, ввернутые в HAML

.some.class{:class => "{{if property}} otherClass {{/if}}"} 

правильно разобрать? Вот скомпилированного как:

<div class='class otherClass property}} some {{/if}} {{if'></div> 

Я пытался избежать все без слов характер, пытаясь одинарные кавычки, и настройки интервала, но ничего не кажется, чтобы исправить это. Я надеюсь найти более элегантное решение, чем просто использовать ключевое слово: plain.

+3

К сожалению для ответа на свой вопрос (или, по-видимому, я не могу в течение еще 6 часов), но я действительно нашел решение, которое работает здесь , Кажется, что проблема связана с тем, как haml объединяет классы из атрибутов с теми из «точечной цепочки». Смена его на это, похоже, работает нормально. % div {: class => "some class {{if property}} otherClass {{/ if}}"} – user1408632

+1

Если вы опубликуете свое решение в качестве ответа, я проголосую за него за ответ за ya. Этот трюк полностью сработал! Благодарю. – poweratom

ответ

1

Я нашел, что вам нужно добавить символ до {{}} для Haml, чтобы принять его. Например:

%div.some.class{:class => "a{{foo}}"} 

Не идея, но набор моих целей.

0

На самом деле, трюк не работает ни для какого выражения руля, которое является умеренно сложным.

В конце концов я решил это, используя строковые литералы в haml. Итак, в примере, показанном в вопросе. Требуется нижний haml, не забудьте закрыть тэг, который является последней строкой.

\ <div class='class {{if property}} otherClass {{/if}} some '> 
-# Normal haml goes here and must not start at the same indent as the above literal 
\ </div> 
0

Переместить все классы в атрибуту класса вместо того чтобы использовать оба класса сокращённого обозначения точек и атрибут класса.

.col-md-12.card{ class: "{{toLowerCase level_name}}-master-card" } 

становится

%div{ class: "col-md-12 card {{toLowerCase level_name}}-master-card" } 

HAML 4.0.7

Смежные вопросы