我注意到在某些轨道视图行中,使用了:
<% # Code... -%>
代替:
<% # Code... %>
有什么区别?
<ul>
<% @posts.each do |post| -%>
<li><%=post.title%></li>
<% end -%>
</ul>
<ul>
在第一个<li>
和最后一个结束</li>
和之间不会有新行</ul>
。如果 - 被省略,会有。
在 ERB 中评估代码的不同选项如下(可以在 Textmate 中使用 Ctrl-Shift-. 访问它们):
<% %>
只评价内容。<%= %>
评估内容并放置结果。<%= -%>
评估内容并打印结果。<%# %>
内容被视为注释,不输出。puts
注意和之间的区别print
。Puts 总是在字符串的末尾添加一个新行,而 print 不会。
基本上,-%>
说最后不会输出新行。
考虑这个
<div>
<% if @some_var == some_value %>
<p>Some message</p>
<% end %>
</div>
如果 @some_var 是 some_value,上面的代码将生成下面的 HTML
<div>
<p>Some message</p>
</div>
如果您已将 - 放入结束标记,则 ERB 解释器将删除带有代码标记的新行,包括 - 并导致以下结果
<div>
<p>Some message</p>
</div>
如果您需要一个好看的 HTML 代码,这很有用。有时你会发现它在与设计师并肩工作时很有用
希望这可以帮助。
有点晚了,但我认为值得指出的是,您也可以这样做:
<%- @posts.each do |post| -%>
<li><%= post.title %></li>
<%- end %>
这会去除前面的任何空白。