我是Ruby / Rails的初学者,只是以编程方式生成了我的第一个HTML - 有点令人兴奋 - 但是当我从浏览器中查看“页面源代码”时,我的HTML有所有这些额外的空白并且搞砸了逻辑压痕:
此视图中的代码:
<% @states_array.each do |state| %>
<ul><%= state %></ul>
<% end %>
我的application.html.erb布局中的代码: 练习标题
<div class="text">
<%= yield %>
</div>
<div class="footer">
</div>
当我查看该页面的页面来源时生成此HTML:
<div class="header">
Practice Header
</div>
<div class="text">
<ul>California</ul>
<ul>Colorado</ul>
<ul>Florida</ul>
<ul>Georgia</ul>
<ul>New York</ul>
<ul>North Carolina</ul>
<ul>North Dakota</ul>
<ul>Oregon</ul>
</div>
<div class="footer">
</div>
每行后只发生一个额外的空格,以及我把&lt;%= yield%&gt;放在哪里的逻辑缩进丢失了。非常感谢您的帮助。
答案 0 :(得分:3)
您可以通过以减号结束来抑制尾随换行:
<% some.ruby.statement -%>
如果您的标记之美对您很重要,请查看Haml(http://haml-lang.com/)。
答案 1 :(得分:2)
<% @states_array.each do |state| %>
<ul><%= state %></ul>
<% end %>
为数组中的每个状态生成字符串"\n<ul>state</ul>\n"
。所以输出在技术上是正确的。你可以用
<% @states_array.each do |state| %><ul><%= state %></ul>
<% end %>
但这并不像你的代码那么容易阅读。我读过有一种方法可以跳过尾随的新行,但不记得确切的方法(更新:见@user156011's answer)。
但事实是 - 它并不重要。 HTML适用于浏览器 - 不用担心它的外观。你真正需要注意的唯一一次是两个标签必须一个接一个地存在而没有间距以防止浏览器注入默认的空格 - 比如从一个较大的图像中切出的一系列标签。
答案 2 :(得分:1)
如果你想要标记可读性 - 哈姆对我来说只是一个梦想。 在开发模式下,它输出正确缩进的华丽HTML。 当您的应用程序在生产模式下运行时,默认情况下会切换到“丑陋模式”,以节省服务器资源。
但是,如果您是Ruby / Rails的新手,学习一种新的模板语言可能不符合您的最佳利益。 (尽管如此,我认为如果你能学习ERb,你可以在一天之内轻松取出Haml。)
如果您要坚持使用ERb,可以使用&lt;% - 和 - %&gt;将分别压制前导/尾随空格。这有助于您寻求干净的标记。
祝你好运:)
〜罗比
答案 3 :(得分:0)
您应该将其更改为:
<ul>
<% @states_array.each do |state| %>
<li><%= state %></li>
<% end %>
</ul>