如何在同一行显示几条haml线?

Tim*_* T. 5 ruby haml

我有以下haml:

  9       %strong Asked by:   
 10       = link_to @user.full_name, user_path(@user)     
 11       .small= "(#{@question.created_at.strftime("%B %d, %Y")})" 
Run Code Online (Sandbox Code Playgroud)

这当前将链接和日期放在单独的行上,它应该看起来像"link(date)",而date的类跨度很小......

mat*_*att 11

你的代码会产生类似这样的html:

<strong>Asked by:</strong>
<a href="userpath">User name</a>
<div class='small'>April 26, 2011</div>
Run Code Online (Sandbox Code Playgroud)

当你使用类似的东西时.small(即使用点而不指定元素类型)haml会创建一个隐式的div.由于div元素是默认的块级元素,因此日期将位于新块中,因此将出现在新行上.为了使它出现在同一行上,您需要一个内联级别元素.

您可以更改"小"类的CSS以显式地使其显示为内联,但是html已经提供了div- 的内联版本span,因此您可以更改最后一行

.small= "(#{@question.created_at.strftime("%B %d, %Y")})" 
Run Code Online (Sandbox Code Playgroud)

%span.small= "(#{@question.created_at.strftime("%B %d, %Y")})" 
Run Code Online (Sandbox Code Playgroud)

哪个会给你

<strong>Asked by:</strong>
<a href="userpath">User name</a>
<span class='small'>April 26, 2011</span>
Run Code Online (Sandbox Code Playgroud)

这些都是内联元素,因此将显示为一行.

至于将它全部放在haml中的同一行,我认为使用简单的haml语法是不可能的.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>
Run Code Online (Sandbox Code Playgroud)

或者你可以创建一个帮助器来为你生成块.