heredoc中未显示换行符

时间:2013-04-11 07:10:37

标签: ruby-on-rails ruby rmagick heredoc

我有一个heredoc字符串

  html =<<EOF
    <span>
      Hello hello 123
    </span>
    <a>Link1</a>
    <a>Link2Link2</a>
EOF

如果我说puts html,它会给出html,这意味着新行很好。如果我拨打p html,我将获得不带换行符的HTML。

然而,我真正需要做的是将此html转换为图片,应该换行符。我是这样做的:

kit  = IMGKit.new html, quality: 30
# using Magick::Image ......
# some code which is not important....
img.write("my_gif.gif")

这几乎没有问题,除了结果html,正如我已经说过的,没有换行符,它只有一行:

<span>Hello hello 123</span><a>Link1</a><a>Link2Link2</a>

当然,如果我添加<br />标签,那么这一切都将得到解决。但由于某种原因我无法做到这一点,我不想使用<br />并且仍然有换行符。

这不是IMGKitRmagic的问题,因为我很确定。

那么我该如何实现呢?

1 个答案:

答案 0 :(得分:1)

我同意这不是IMGKit的问题 - 它正在做它应该做的事情 - 呈现HTML。 heredoc也没有任何问题,你可以用Ruby的HTML表示来做任何神奇的事情,这样HTML源中的文字空格(空格,制表符,换行符)在渲染时变得可见。

HTML查看器最常见的源空白呈现是,任何长度的纯空格(无论是空格,制表符,换行符还是任何组合)都会在视图中呈现为单个空格-> <- 。此外,一个元素结束与另一个元素结束之间的空白通常被完全忽略(尽管元素本身的渲染可能会导致视图中的布局/间距效果)。

但是,您可以这样做:

kit  = IMGKit.new html.gsub(/\n/,"<br/>"), quality: 30

并在不向您的heredoc添加<br/>的情况下渲染换行符。

相关问题