【问题标题】:HAML using links in text without newlineHAML 在没有换行符的文本中使用链接
【发布时间】:2011-08-16 14:17:43
【问题描述】:

我目前正在开发一个小的 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 中有没有一种方法可以在不使用换行符的情况下插入链接?

【问题讨论】:

    标签: html sinatra haml


    【解决方案1】:

    这比您想象的要容易。只需阅读此参考资料:http://haml-lang.com/docs/yardoc/file.HAML_REFERENCE.html#whitespace_removal__and_

    所以用法很简单,只需在你的 %p 标签后面加上less-sign "

    %p<
     I'm talking about 
     %a {:href => 'http://ruby-lang.org'}>Ruby 
     in this text.
    

    它会生成你想要做的。

    【讨论】:

    • 为什么没有标记为正确答案?谢谢德米特里!
    • @dome 这会从生成的 HTML 中删除换行符,但它们在标记中仍然是必需的,因此这实际上并不能回答问题。
    • 这不起作用,因为它删除了链接周围的空格,如马特的回答中所述
    • 这不起作用,它只是删除了第一个新行。换句话说,它会生成&lt;p&gt;I'm talking about\n&lt;a href...
    • @FilipKis 如果您的意思是链接标签前的换行符,那么您也必须使用与 %a 相同的模式。
    【解决方案2】:

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

    %p
      I'm talking about #{ link_to 'Ruby', 'http://ruby-lang.org'} in this text.
    

    【讨论】:

    • 加1!如果你愿意,你也可以把它做成一个衬里。
    • 是的,你可以,但是 leifg 明确提到了长文本,所以我认为这只是一个较大段落的片段。无论如何 - 这在 Sinatra 中是否有效,或者这是特定于 Rails 的语法?我真的不确定。
    • link_toRails specific,尽管创建类似的 helper function in Sinatra 非常简单。
    • here 是 rails 中用于 link_to 帮助器的代码。除非您认为您可能想要使用块,否则您可能会将其缩减为 (*args)。我可能会在 this 文件中为 link_to 方法创建一个 HAML 助手。
    【解决方案3】:

    我假设您询问的是在源 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 em> 空格,例如

    I'm talking about 
    %a{:href => 'http://ruby-lang.org'}>Ruby 
    in this text.
    

    使用&gt; 删除外部空格会产生:

    I'm talking about<a href='http://ruby-lang.org'>Ruby</a>in this text.
    

    这将显示为

    我在本文中说的是Ruby

    即“Ruby”周围没有空格,这可能不是您想要的。

    【讨论】:

    • 这是不正确的 - 有可能。 Sadiq 使用link_to 的回答有效。
    • @paul Sadiq 的回答包含多行。问题是要避免 在源代码中,而不是在呈现的输出中避免换行。
    • 哦,我明白了 - 这很令人困惑 - 感谢您的澄清。
    【解决方案4】:

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

    %p I'm talking about <a href="http://ruby-lang.org">Ruby</a> in this text.
    

    【讨论】:

      【解决方案5】:

      完全正确:

      %p
        I'm talking about 
        = link_to 'Ruby', 'http://ruby-lang.org'
        in this text.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-18
        • 2017-01-03
        • 2011-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多