有人可以帮助我理解如何正确地缩进haml代码吗
.wrapper_with_padding
#docs.clearfix
- unless @docs.blank
- @docs.each do |doc|
%a{ href: (url_for [doc])}
.doc
%p.title= doc.title
%p.date= time_ago_in_words(doc.created_at)
%p.content= truncate(doc.content, length:50)
- else
%h2 Create Doc!
%p Start Creating Documents and Organizing your life!
%button= link_to "Create Doc", new_doc_path
答案 0 :(得分:3)
如果您发布了预期的HTML,会更容易。这是一种可能性:
- docs = %w[google.com yahoo.com apple.com]
.wrapper_with_padding
#docs.clearfix
- unless docs.empty?
- docs.each do |doc|
%a{ href: (doc) } link text
.doc
%p.title= "some title"
%p.date= "some date"
%p.content= "some content"
- else
%h2 Create Doc!
%p Start Creating Documents and Organizing your life!
%button{href: "http://www.example.com"} Create Doc
输出:
<div class='wrapper_with_padding'>
<div class='clearfix' id='docs'></div>
<a href='google.com'>link text</a>
<div class='doc'>
<p class='title'>some title</p>
<p class='date'>some date</p>
<p class='content'>some content</p>
</div>
<a href='yahoo.com'>link text</a>
<div class='doc'>
<p class='title'>some title</p>
<p class='date'>some date</p>
<p class='content'>some content</p>
</div>
<a href='apple.com'>link text</a>
<div class='doc'>
<p class='title'>some title</p>
<p class='date'>some date</p>
<p class='content'>some content</p>
</div>
</div>
如果docs数组为空:
<div class='wrapper_with_padding'>
<div class='clearfix' id='docs'></div>
<h2>Create Doc!</h2>
<p>Start Creating Documents and Organizing your life!</p>
<button href='http://www.example.com'>Create Doc</button>
</div>
根据haml docs:
Ruby Blocks
Ruby块,如XHTML标签,不需要显式关闭 Haml的。相反,它们会根据缩进自动关闭。一个 每当Ruby之后的缩进增加时块就会开始 评估命令。它在压痕减少时结束(只要 它不是else子句或类似的东西)。
因此,要在if / unless语句之后在ruby代码中启动块,您需要从-
代码指示符缩进。并且要在each()语句之后启动另一个块,再次必须从每个()行的-
代码指示符缩进。完成块后,您只需返回到启动块的-
代码指示器的级别。
创建元素的haml行查找以查看前一个haml行创建元素的位置。如果当前haml行从前一个haml行缩进,那么当前元素将成为前一个元素的子元素 - 缩进的数量无关紧要。例如,<a>
haml需要在我的示例中缩进三次才能由each()
块控制。并且因为<a>
haml从#doc.clearfix
haml中缩进了一些,这会创建<div>
,这意味着<a>
标记将是<div>
标记的子标记int a = -500;
a = a << 1;
a = (unsigned int)a >> 1;
//printf("%d",a) gives me "2147483148"
}。
答案 1 :(得分:2)
Haml的主要目标(与许多其他模板一样)是为了减少混乱;所有这些括号和括号以及诸如此类的东西都被完全删除了。但是当事情开始和结束时你仍需要告诉它(计算机很聪明,它们并不那么聪明),所以我们使用缩进代替。任何时候你在标签内写一些东西,缩进它!当你完成那个标签时,unindent!
例如:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
变为
<p>This is a <small>very small</small> paragraph</p>Yay!
每次打开标签时,下面的行都会缩进,只要您关闭该标签,我们就会向后移动到左侧。与%p
This is a
%small
very small
paragraph
Yay!
s相同的事情!