当我做类似的事情时:
<%= c.title %>
Rails 渲染它是这样的:
"
Title
"
如果我用标签包装字符串,这种行为就不一样了。有人可以解释一下为什么 Rails 会这样吗?
更新
当我做类似的事情时:
<%= c.title %>
Rails 渲染它是这样的:
"
Title
"
如果我用标签包装字符串,这种行为就不一样了。有人可以解释一下为什么 Rails 会这样吗?
更新
这与 ERB 而不是 Rails 有关。处理模板时,它将输出 ERB 标记(<%= %>)
中的任何值输出到输出缓冲区并简单地执行任何其他代码。
其他一切都保持不变。ERB 标记前后的空格保持不变。您可以做的最多的事情是-
在标签中使用它来去除一些空白。
<!-- -->
<% for i in 1..10 %>
<%= i -%>
<% end %>
<!-- -->
将输出
<!-- foo -->
1 2 3 4 5 6 7 8 9 10<!-- foo -->
注意每个数字前仍然出现的两个空格,去掉那个空格,它看起来就像一个长数字。
将此与
<% for i in 1..10 %>
<%= i %>
<% end %>
将输出
<!-- -->
1
2
3
4
5
6
7
8
9
10
<!-- -->
这是从上下文菜单中选择查看源代码后测试页面的输出。
<!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>
您的布局文件或呈现此视图的其他文件中可能有一些缩进。
您的 application.html.erb 可能如下所示:
<html>
<head>...</head>
<body>
<%= yield %> <!-- Some whitespaces at the beginning of this line -->
</body>
</html>
Rails 只是简单地将 <%= %> 标记替换为其中表达式的值,仅此而已。
我和你有同样的问题!
我的解决方案是将文件编码从更改UTF-8
为UTF-8 without BOM
我正在使用 sinatra,很高兴与您分享!