我有以下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)
或者你可以创建一个帮助器来为你生成块.
| 归档时间: |
|
| 查看次数: |
4381 次 |
| 最近记录: |