как создать сильный элемент внутри р - PullRequest
4 голосов
/ 04 июля 2010

В хамле, как я могу отобразить следующий невероятно простой HTML:

<p>Results found for <strong>search term</strong>

, где 'условие поиска' на самом деле является переменной Ruby с именем @query?

Я пытаюсьследующее,

%p results found for <strong>= @query</strong>

Но это делает буквально = @query.Если я попытаюсь:

%p results found for <strong>
= @query
</strong>

, тогда термин запроса отображается правильно, но находится на новой строке.

Кроме того, мне интересно, есть ли лучший способ визуализации <strong> в хамле, сохраняя все в одной строке.

Мне известна документация хамла, но, насколько я вижу, нет примера использования простой встроенной переменной Ruby.

----- ОБНОВЛЕНИЕ -------

Следующий код работает и показывает, как использовать переменную, не входящую в теги:

   %p   
    = @trials_found_count
    results found for
    %strong= @query

Но я нахожу это действительно нечитаемым - трудно сказать, что он отображает только одну строку HTML без добавления комментария выше.

Есть ли способ, которым я могу поместить весь этот код в одну строку?Или это как хамл работает?

Ответы [ 3 ]

5 голосов
/ 04 июля 2010

HAML ограничен пробелами. Вложенные теги идут в строке ниже и на один уровень выше тега. Встроенный Ruby, из которого вы хотите отобразить вывод, открывается символом «=». Встроенный Ruby, который вы не хотите отображать, например, начало цикла, использует '-'. Они эквивалентны <% =%> и <%%> соответственно в эрб.

То, что вы хотите, выглядело бы так:

%p 
   results found for
   %strong= @query

Что даст html:

<p>results found for <strong>@query</strong></p>

Следует отметить, что '=' для запуска оценки Ruby может идти только в начале строки или после объявления тега и что в каждой строке может быть только одно объявление тега. Раздел «Оценка Ruby» в ссылке, которую вы связали, подробно описывает встроенный Ruby, а также руководство по haml, которое охватывает встроенный ruby ​​и многие другие основы haml:
http://haml -lang.com / tutorial.html

4 голосов
/ 05 июля 2010

Вот как бы я это сделал:

%p No results found for <strong>#{h @query}</strong>
1 голос
/ 04 июля 2010

Я не уверен, но вам может понадобиться неразрывный пробел, чтобы сохранить пространство между для и <strong>

%p results found for&nbsp;
   %strong= @query
...