【问题标题】:haml remove whitespace before dot after adding rails link_to, mail_tohaml 添加rails link_to,mail_to后删除点之前的空格
【发布时间】:2012-02-29 12:29:17
【问题描述】:

我正在用haml写文本:

Blab bla for any questions contact us on me@foo.com.

所以haml看起来像

%p
  Blab bla for any questions contact us on
  = mail_to 'me@foo.com'
  .   

注意 .在 ascii 中是点,我也可以用 = '.' 替换该行(渲染字符串点)

但渲染的文本看起来像

Blab bla for any questions contact us on me@foo.com .

区别在于末尾点之前的空格

我想出并有效的解决方案是

%p
  Blab bla for any questions contact us on
  = mail_to('me@foo.com') + '.'

我只是在寻找最佳实践:) thx

【问题讨论】:

    标签: ruby-on-rails haml


    【解决方案1】:

    我会用这个:

    %p
      Blab bla for any questions contact us on #{mail_to('me@foo.com')}.
    

    另见the Haml FAQ:

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

    在这种情况下,您不需要其他语言,只需插入函数即可。

    【讨论】:

    • 还有一个问题是这只是本地 Rails 的事情,或者在使用任何 ruby​​ 框架(sinatra、padrino f.e.)时默认由 haml 支持?
    • @equivalent8 这是正常的 Haml 行为:haml-lang.com/docs/yardoc/…
    【解决方案2】:

    如果您要使用== 表示法,对于带有mail_to 的行,您应该能够做您想做的事,就像这样:

    == #{mail_to 'me@foo.com'}.
    

    == 表示法对整行执行插值。

    【讨论】:

    • 是的,这很有效,而且比我的解决方案更优雅。会看看还有什么其他的解决方案:)
    【解决方案3】:

    HAML 有a bunch of helpers 可以轻松解决此类情况。 succeed 解决了尾随点问题。

    = succeed '.' do
       = link_to t('info.terms'), info_path(:terms)
    

    【讨论】:

      猜你喜欢
      • 2011-08-06
      • 1970-01-01
      • 2014-07-26
      • 2011-07-05
      • 2013-12-01
      • 2017-02-03
      • 2016-05-02
      • 1970-01-01
      • 2014-11-11
      相关资源
      最近更新 更多