【发布时间】:2010-09-23 09:56:04
【问题描述】:
我注意到在某些 Rails 视图中使用了这个:
<% # Code... -%>
代替:
<% # Code... %>
有什么区别?
【问题讨论】:
标签: ruby-on-rails view-templates
我注意到在某些 Rails 视图中使用了这个:
<% # Code... -%>
代替:
<% # Code... %>
有什么区别?
【问题讨论】:
标签: ruby-on-rails view-templates
有点晚了,但我认为值得指出的是,您也可以这样做:
<%- @posts.each do |post| -%>
<li><%= post.title %></li>
<%- end %>
这会去掉前面的所有空格。
【讨论】:
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 代码,这很有用。有时你会发现它在与设计师并肩工作时很有用
希望这会有所帮助。
【讨论】:
<ul>
<% @posts.each do |post| -%>
<li><%=post.title%></li>
<% end -%>
</ul>
<ul> 和第一个 <li> 以及最后一个结束 </li> 和 </ul> 之间不会有新行。如果 - 被省略,会有。
【讨论】: