在haml中,如何呈现以下令人难以置信的基本HTML:
<p>Results found for <strong>search term</strong>
其中'搜索词'实际上是一个名为@query
的Ruby变量?
我正在尝试以下内容,
%p results found for <strong>= @query</strong>
但是从字面上呈现= @query
。如果我尝试:
%p results found for <strong>
= @query
</strong>
然后查询字词正确呈现,但是在新行上。
另外,我想知道是否有更好的方法在haml中呈现<strong>
,同时保持所有内容都在同一行。
我知道haml documentation,但据我所知,没有一个使用简单的内联Ruby变量的例子。
----- ------- UPDATE
以下代码有效,并展示了如何使用不在标记内的变量:
%p
= @trials_found_count
results found for
%strong= @query
但是我觉得它真的不可读 - 很难说它只是一行HTML而不添加上面的评论。
有没有办法可以将所有这些代码放在一行上?或者这就是haml的工作原理?
答案 0 :(得分:5)
HAML是以空格分隔的。嵌套标签位于下面的行上,而上面的标签中有一个级别。要显示输出的嵌入式Ruby使用'='打开。您不想显示的嵌入式Ruby(例如循环的开头)使用' - '这些等同于&lt;%=%&gt;和&lt; %%&gt;分别在erb。
你想要的是这样的:
%p
results found for
%strong= @query
哪会产生html:
<p>results found for <strong>@query</strong></p>
应该注意,启动Ruby评估的'='只能出现在行的开头或标记声明之后,并且每行只能发生一个标记声明。 您链接的参考文献的Ruby评估部分详细介绍了嵌入式Ruby,以及涵盖嵌入式ruby和许多其他haml基础知识的haml教程: http://haml-lang.com/tutorial.html
答案 1 :(得分:4)
我是这样做的:
%p No results found for <strong>#{h @query}</strong>
答案 2 :(得分:1)
我不确定,但您可能需要一个不间断的空间来保留 for 和<strong>
%p results found for
%strong= @query