4

我注意到在某些轨道视图行中,使用了:

<% # Code... -%> 

代替:

<% # Code... %>

有什么区别?

4

4 回答 4

17
    <ul>
    <% @posts.each do |post| -%> 
      <li><%=post.title%></li>
    <% end -%>
    </ul>

<ul>在第一个<li>和最后一个结束</li>和之间不会有新行</ul>。如果 - 被省略,会有。

于 2008-11-21T07:23:17.693 回答
8

在 ERB 中评估代码的不同选项如下(可以在 Textmate 中使用 Ctrl-Shift-. 访问它们):

  • <% %> 只评价内容。
  • <%= %> 评估内容并放置结果。
  • <%= -%>评估内容并打印结果。
  • <%# %> 内容被视为注释,不输出。

puts注意和之间的区别print。Puts 总是在字符串的末尾添加一个新行,而 print 不会。

基本上,-%>说最后不会输出新行。

于 2008-11-22T11:15:02.050 回答
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 代码,这很有用。有时你会发现它在与设计师并肩工作时很有用

希望这可以帮助。

于 2008-11-22T10:41:48.760 回答
1

有点晚了,但我认为值得指出的是,您也可以这样做:

<%- @posts.each do |post| -%>
  <li><%= post.title %></li>
<%- end %>

这会去除前面的任何空白。

于 2008-11-26T16:18:17.520 回答