我注意到在一些rails视图中,使用了这个:
<% # Code... -%>
而不是:
<% # Code... %>
有什么区别?
答案 0 :(得分:17)
<ul>
<% @posts.each do |post| -%>
<li><%=post.title%></li>
<% end -%>
</ul>
<ul>
和第一个<li>
以及最后一个结束</li>
和</ul>
之间不会有新行。如果 - 被省略,那就会。
答案 1 :(得分:8)
评估ERB中代码的不同选项如下(可以使用Ctrl-Shift-在Textmate中访问它们。):
<% %>
只评估内容。<%= %>
评估内容并输入结果。<%= -%>
评估内容并打印结果。<%# %>
内容被视为注释而不会输出。注意puts
和print
之间的区别。 Puts总是在字符串的末尾添加一个新行,而print则不会。
基本上,-%>
表示最后不输出新行。
答案 2 :(得分:2)
考虑一下
<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代码,这将非常有用。有时你会发现它与设计师一起工作时很有用
希望这有帮助。
答案 3 :(得分:1)
有点晚了,但我认为值得指出你也可以这样做:
<%- @posts.each do |post| -%>
<li><%= post.title %></li>
<%- end %>
这会消除前面的任何空白。