Ruby Erb视图中不需要的空白

Ruby Erb视图中不需要的空白,ruby,sinatra,erb,Ruby,Sinatra,Erb,这是我的sinatra代码: get '/' do foo = 'not bar' erb :index end 我的布局.erb <html> <head></head> <body> <%= yield %> </body> </html> <body> ____<%= yield %> </body> 我的索引.erb <

这是我的sinatra代码:

get '/' do
    foo = 'not bar'
    erb :index
end
我的布局.erb

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

我的索引.erb

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

现在的问题是

额外的文字(用黄色照亮)干扰了我的设计 知道为什么会这样吗? 如果我不在所有html代码中使用layout和index.erb,就不会发生这种情况

[编辑:]
在…中使用抛出错误(意外的tUMINUS,应为kEND;@_out_buf.concat“”;-yield-;@_out_buf.concat“\n”)。。。。layout.rb

我最好的猜测是这4个空格来自layout.erb中的软选项卡

<html>
  <head></head>
  <body>
    <%= yield %>
  </body>
</html>
<body>
____<%= yield %>
</body>
从不让我失望空白


讨厌ERB

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

发件人:

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

%  enables Ruby code processing for lines beginning with %
<> omit newline for lines starting with <% and ending in %>
>  omit newline for lines ending in %>
%对以%开头的行启用Ruby代码处理
省略以开头的行的换行符
>对于以%>

忘了提到在…中使用抛出错误(意外的tUMINUS,期望kEND;@_out_buf.concat“”;-yield-;@_out_buf.concat“\n”)。。。。layout.rb位于index.erb中。。这是您获得输出的唯一内容?(引号包含换行符)?@zabba是的,它是quotesFor sinatra添加的新行字符,
set:erb,:trim=>'-'
要使用-%>rails会自动执行此操作。+1 erb不仅仅用于HTML,而且不会尝试通过删除空白来实现任何“智能”操作。您的布局告诉它“创建一个body标记,然后创建一个换行符,然后创建一些空格,然后在其中放置另一个字符串。”所以它就是这么做的。如果你不想要空白,最简单的删除方法就是不包含它。不幸的是,我认为用这些选项删除其他空白是不可能的,只有一个换行符。