你什么时候使用<% - %>而不是< %%>

时间:2008-11-21 07:17:49

标签: ruby-on-rails view-templates

我注意到在一些rails视图中,使用了这个:

<% # Code... -%> 

而不是:

<% # Code... %>

有什么区别?

4 个答案:

答案 0 :(得分:17)

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

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

答案 1 :(得分:8)

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

  • <% %>只评估内容。
  • <%= %>评估内容并输入结果。
  • <%= -%>评估内容并打印结果。
  • <%# %>内容被视为注释而不会输出。

注意putsprint之间的区别。 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 %>

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