我目前正在开发一个小型的Sinatra Ruby应用程序。对于表示层,我使用HAML,效果很好。
但是我有一个常见问题解答页面,其中有较长的文本段落,这不是问题。但在某些段落中,我想要包含链接。使用纯HTML,这很容易实现,并且仍然可读。
<p>
I'm talking about <a href="http://ruby-lang.org">Ruby</a> in this text.
</p>
对于HAML,我坚持使用这些新段落,然后看起来像这样:
%p
I'm talking about
%a {:href => 'http://ruby-lang.org'}>Ruby
in this text.
我认为这确实打破了工作流程。
HAML中是否有一种方法可以在不使用换行符的情况下插入链接?
答案 0 :(得分:54)
这比你想象的要容易。请阅读此参考:http://haml-lang.com/docs/yardoc/file.HAML_REFERENCE.html#whitespace_removal__and_
因此用法很简单,只需添加少量符号“&lt;”在你的%p标签之后,例如:
%p<
I'm talking about
%a {:href => 'http://ruby-lang.org'}>Ruby
in this text.
它会产生您想要做的事情。
答案 1 :(得分:16)
不熟悉Sinatra,但在Rails中你可以这样做:
%p
I'm talking about #{ link_to 'Ruby', 'http://ruby-lang.org'} in this text.
答案 2 :(得分:11)
我假设您要求在源Haml 中添加没有换行符的链接。你真的不可能在这里做你想做的事。来自haml FAQ:
表达文档的结构并表达内联格式是两个非常不同的问题。 Haml主要是为结构而设计的,因此处理格式化的最佳方法是将其留给其他专为其设计的语言。
Haml使用空格和缩进来确定要做什么,没有任何换行符就没有任何缩进,因此haml无法确定要添加到页面的元素。
如果您只想要静态文本块,可以使用常见问题解答建议的markdown filter,如下所示:
:markdown
I'm talking about [Ruby](http://ruby-lang.org) in this text.
正如其他答案所指出的那样,如果你想从生成的HTML 中删除换行符,那么你可以考虑使用whitespace removal operators,但请注意它们会删除 all 空格,例如
I'm talking about
%a{:href => 'http://ruby-lang.org'}>Ruby
in this text.
使用>
删除外部空格的将产生:
I'm talking about<a href='http://ruby-lang.org'>Ruby</a>in this text.
,这将显示为
我在本文中谈到Ruby。
即。没有“Ruby”周围的空格,这可能不是你想要的。
答案 3 :(得分:7)
您也可以在HAML中使用内联HTML。
%p I'm talking about <a href="http://ruby-lang.org">Ruby</a> in this text.
答案 4 :(得分:7)
完美的是:
%p
I'm talking about
= link_to 'Ruby', 'http://ruby-lang.org'
in this text.