HAML使用文本中的链接而没有换行符

lei*_*ifg 17 html haml sinatra

我目前正在开发一个小的Sinatra Ruby应用程序.对于表示层,我使用HAML,效果很好.

但是我有一个常见问题解答页面,其中有较长的文本段落,这不是问题.但在某些段落中,我想要包含链接.使用纯HTML,这很容易实现,并且仍然可读.

<p>
I'm talking about <a href="http://ruby-lang.org">Ruby</a> in this text.
</p>
Run Code Online (Sandbox Code Playgroud)

有了HAML,我坚持使用这些新段落,然后看起来像这样:

%p
 I'm talking about 
 %a {:href => 'http://ruby-lang.org'}>Ruby 
 in this text.
Run Code Online (Sandbox Code Playgroud)

我认为这确实打破了工作流程.

HAML中是否有一种方法可以在不使用换行符的情况下插入链接?

Dmi*_*kin 54

这比你想象的要容易.请阅读此参考:http://haml-lang.com/docs/yardoc/file.HAML_REFERENCE.html#whitespace_removal__and_

因此使用很简单,只需在%p标记后添加少量符号"<",例如:

%p<
 I'm talking about 
 %a {:href => 'http://ruby-lang.org'}>Ruby 
 in this text.
Run Code Online (Sandbox Code Playgroud)

它会产生你想要做的.

  • 为什么这不是正确答案?谢谢德米特里! (4认同)

Thi*_*ilo 16

不熟悉Sinatra,但在Rails中你可以这样做:

%p
  I'm talking about #{ link_to 'Ruby', 'http://ruby-lang.org'} in this text.
Run Code Online (Sandbox Code Playgroud)


mat*_*att 11

我假设你要求在源Haml中添加没有换行符的链接.你真的不可能在这里做你想做的事.来自haml FAQ:

表达文档的结构并表达内联格式是两个非常不同的问题.Haml主要是为结构而设计的,因此处理格式化的最佳方法是将其留给其他为其设计的语言.

Haml使用空格和缩进来确定要做什么,并且没有任何换行符没有任何缩进,因此haml无法确定要添加到页面的元素.

如果您只想要静态文本块,可以使用降价过滤器,如FAQ建议的那样:

:markdown
  I'm talking about [Ruby](http://ruby-lang.org) in this text.
Run Code Online (Sandbox Code Playgroud)

正如其他答案所指出的那样,如果你想从生成的HTML中删除换行符,那么你可以考虑使用空白删除操作符,但请注意它们将删除所有空格,以便例如

I'm talking about 
%a{:href => 'http://ruby-lang.org'}>Ruby 
in this text.
Run Code Online (Sandbox Code Playgroud)

其使用>以除去外空白会产生:

I'm talking about<a href='http://ruby-lang.org'>Ruby</a>in this text.
Run Code Online (Sandbox Code Playgroud)

这将显示为

我在本文中谈论Ruby.

即没有"Ruby"周围的空格,这可能不是你想要的.


pos*_*ist 7

您还可以在HAML中使用内联HTML.

%p I'm talking about <a href="http://ruby-lang.org">Ruby</a> in this text.
Run Code Online (Sandbox Code Playgroud)


Sad*_*dik 7

完美的是:

%p
  I'm talking about 
  = link_to 'Ruby', 'http://ruby-lang.org'
  in this text.
Run Code Online (Sandbox Code Playgroud)