2

当我做类似的事情时:

<%= c.title %>

Rails 渲染它是这样的:

"
        Title
    "

如果我用标签包装字符串,这种行为就不一样了。有人可以解释一下为什么 Rails 会这样吗?

更新

Github 的回购链接

4

4 回答 4

1

这与 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&#x27;s wrong with me?

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


</body>
</html>
于 2013-02-25T13:34:41.273 回答
0

我没有看到问题。这是呈现的 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>
于 2013-02-25T13:43:31.750 回答
0

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

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

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

Rails 只是简单地将 <%= %> 标记替换为其中表达式的值,仅此而已。

于 2013-02-25T13:17:24.997 回答
0

我和你有同样的问题!

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

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

于 2013-09-08T11:47:14.263 回答