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's wrong with me?
<!-- -->What'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'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命令。