【问题标题】:Unwanted whitespace in Erb viewErb 视图中不需要的空格
【发布时间】:2011-10-26 16:55:21
【问题描述】:

这是我的 sinatra 代码:

get '/' do
    foo = 'not bar'
    erb :index
end

我的布局.erb

<html>
  <head></head>
  <body>
    <%= yield %>
  </body>
</html>

我的 index.erb

<div class="container">
</div>

现在的问题是

多余的文字(用黄色突出显示)扰乱了我的设计 知道为什么会这样吗? 如果我不使用布局并且仅使用 index.erb 和所有 html 代码,则不会发生这种情况

[编辑:] 在 .... layout.rb 中使用 会引发错误(意外的 tUMINUS,期望 kEND ;@_out_buf.concat " "; - yield -; @_out_buf.concat "\n" )

【问题讨论】:

  • 在....布局.rb
  • 在 index.erb 中。 ..这是唯一的内容
  • 你得到一个输出" "? (包含换行符的引号)?
  • @zabba 是的,它是引号中的新行字符
  • 对于 sinatra add,set :erb, :trim =&gt; '-' 使用 -%> rails 自动有这个。

标签: ruby sinatra erb


【解决方案1】:

您可以使用 ERB 的 *trim_mode* 参数进行设置

来自http://ruby-doc.org/stdlib-1.9.3/libdoc/erb/rdoc/ERB.html#method-c-new

如果向 trim_mode 传递一个包含以下一个或多个修饰符的字符串,ERB 将调整其代码生成,如下所示:

%  enables Ruby code processing for lines beginning with %
<> omit newline for lines starting with <% and ending in %>
>  omit newline for lines ending in %>

【讨论】:

  • 不幸的是,我认为使用这些选项无法删除其他空格,只能删除一个换行符。
【解决方案2】:

我最好的猜测是 4 个空格来自 layout.erb 中的软标签

<body>
____<%= yield %>
</body>

试试&lt;body&gt;&lt;%= yield%&gt;&lt;/body&gt;

我已经使用 Slim 很长时间了 和

body
= yield

永远不会让我失望

讨厌 ERB

【讨论】:

  • +1 Erb 不仅适用于 HTML,而且不会尝试通过删除空格来做任何“聪明”的事情。您的布局告诉它“创建一个body 标记,然后是一个换行符,然后是一些空格,然后在其中放入另一个字符串。” 这就是它所做的。如果您不想要空格,删除它的最简单方法是不包含它。
猜你喜欢
相关资源
最近更新 更多
热门标签