Ваш код будет генерировать что-то вроде этого html:
<strong>Asked by:</strong>
<a href="userpath">User name</a>
<div class='small'>April 26, 2011</div>
Когда вы используете что-то вроде .small
(то есть используйте точку без указания типа элемента), haml создает неявное div
.Так как div
элементы по умолчанию элементы уровня блока , дата будет в новом блоке и появится в новой строке.Для того, чтобы он отображался в одной строке, вам понадобится встроенный элемент уровня .
. Вы можете изменить CSS для «маленького» класса, чтобы он явно отображал его как встроенный., но HTML уже предоставляет встроенную версию div
- span
, так что вы можете изменить последнюю строку с
.small= "(#{@question.created_at.strftime("%B %d, %Y")})"
на
%span.small= "(#{@question.created_at.strftime("%B %d, %Y")})"
, что даст вам
<strong>Asked by:</strong>
<a href="userpath">User name</a>
<span class='small'>April 26, 2011</span>
, которые являются встроенными элементами, поэтому будут отображаться в виде одной строки.
Что касается того, чтобы все это было в одной строке в хамле, я не думаю, что это возможно с обычнымсинтаксис хамлаHaml использует отступ и пробел, чтобы определить, что делать, а наличие только одной строки означает, что отступа нет.
В haml FAQ сказано:
Выражение структуры документа и выражение встроенного форматирования - две очень разные проблемы.Haml в основном предназначен для структуры, поэтому лучший способ справиться с форматированием - оставить его для других языков, предназначенных для него.
Похоже, вы на грани того, для чего предназначен haml,Вы можете написать html напрямую, если вы действительно хотите, чтобы все это было в одной строке:
<strong>Asked by:</strong> #{link_to @user.full_name, user_path(@user)} <span class="small">(#{@question.created_at.strftime("%B %d, %Y")})</span>
или, возможно, вы могли бы создать помощника, который сгенерирует блок для вас.