Ruby on rails Rails在html文件中呈现带空格的字符串

Ruby on rails Rails在html文件中呈现带空格的字符串,ruby-on-rails,ruby,Ruby On Rails,Ruby,当我做以下事情时: <%= c.title %> 如果我用标记包装字符串,这种行为就不同了。有人能解释一下Rails为什么会这样吗 更新 您的布局文件或呈现此视图的其他文件中可能有一些缩进 您的application.html.erb可能如下所示: <html> <head>...</head> <body> <%= yield %> <!-- Some whitespaces at the begi

当我做以下事情时:

<%= c.title %>
如果我用标记包装字符串,这种行为就不同了。有人能解释一下Rails为什么会这样吗

更新


您的布局文件或呈现此视图的其他文件中可能有一些缩进

您的application.html.erb可能如下所示:

<html>
  <head>...</head>
  <body>
    <%= yield %> <!-- Some whitespaces at the beginning of this line -->
  </body>
</html>

Rails只是用其中表达式的值替换标记,仅此而已。

这与ERB而不是Rails有关。处理模板时,它将输出ERB标签中的任何值输出到输出缓冲区,并简单地执行任何其他代码

其他一切都保持不变。ERB标记前后的空白不受影响。你能做的最多的就是在标签中使用-in来去掉一些空白

<!-- -->
<% for i in 1..10 %>
  <%= i -%>
<% end %>
<!-- -->
将输出

<!-- foo -->
  1  2  3  4  5  6  7  8  9  10<!-- foo -->
<!-- -->
  1
  2
  3
  4
  5
  6
  7
  8
  9
  10
<!-- -->
注意在每个数字前仍然显示的两个空格,去掉那个空格,它看起来就像一个长数字

将此与

<% for i in 1..10 %>
  <%= i %>
<% end %>
将输出

<!-- foo -->
  1  2  3  4  5  6  7  8  9  10<!-- foo -->
<!-- -->
  1
  2
  3
  4
  5
  6
  7
  8
  9
  10
<!-- -->
这是从上下文菜单中选择View Source后测试页面的输出

<!DOCTYPE html>
<html>
<head>
  <title>Testapp</title>
  <link href="/assets/application-1b13569e9620782f423d4cd3ce931750.css" media="all" rel="stylesheet" type="text/css" />
  <script src="/assets/application-9a717ea62eac3463d689b2ba0a4e85b4.js" type="text/javascript"></script>
  <meta content="authenticity_token" name="csrf-param" />
<meta content="/hfgtJZWzxaQ2d7txQMAt2b+21MWSTYcf6/2F7Pei1k=" name="csrf-token" />
</head>
<body>

<h1>Home#index</h1>
<p>Find me in app/views/home/index.html.erb</p>
What&#x27;s wrong with me?

<!-- -->What&#x27;s wrong with me surrounded by html commet<!-- -->


</body>
</html>

我看不出有什么问题。以下是呈现的HTML:

<!DOCTYPE html>
<html>
<head>
  <title>Testapp</title>
  <link href="/assets/application.css?body=1" media="all" rel="stylesheet" type="text/css" />
<link href="/assets/home.css?body=1" media="all" rel="stylesheet" type="text/css" />
  <script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
<script src="/assets/home.js?body=1" type="text/javascript"></script>
<script src="/assets/application.js?body=1" type="text/javascript"></script>
  <meta content="authenticity_token" name="csrf-param" />
<meta content="cOfMPm5S/tCHCEHkeRTeQTITAiz800s+3Q4ZgNWCNlY=" name="csrf-token" />
</head>
<body>

<h1>Home#index</h1>
<p>Find me in app/views/home/index.html.erb</p>
What&#x27;s wrong with me?


</body>
</html>
相关布局部分:

<body>

<%= yield %>

</body>

我和你有同样的问题

我的解决方案是将文件编码从UTF-8更改为不带BOM的UTF-8


我正在使用sinatra,很高兴与您分享

你确定吗?或的输出是什么?前者只是标题,后者是标题。如果我错了,请纠正我。但是为什么waldyr会在引号中得到结果呢?在其他视图文件中有空格。例如,如果这是一个视图模板,您可能有一个布局文件,其中包含您看到的空白。您完全脱离上下文显示的代码完全按照预期运行。好的,erb在任何情况下都不会添加任意空格。如果没有周围的HTML,我不知道如何回答这个问题。在哪个文件中使用它?我刚刚注意到只有Chrome有这个issue@waldyr.ar这就是我正在使用的。你能用这个检查一下并告诉我你使用的是哪个chrome版本吗?@waldyr.ar基本上是相同的渲染/检查输出。在OS X下的版本25.0.1364.99。我不敢说,但我在类似的情况下进行了测试,它仍然显示对我来说是错误的,您使用的浏览器是哪个?它是rails应用程序的输出html源,与浏览器无关。等等,您正在查看chrome的“元素”选项卡吗?这与输出源无关。你可以去掉所有的空格和换行符,不管chrome怎么做,它们仍然会被格式化。右键单击页面并查看源代码,或者在命令行上使用wget/GET命令。