11

对不起这个问题,我认为它更离题,但我在谷歌上找不到任何东西!

我现在多次看到很多人使用-%>而不是仅仅使用%>. 有什么意义?

例子:

<% @images.each_slice(6) do |slice| -%>
  <div class="gallery">
    <% slice.each do |image| -%>
      <%= image_tag(image.url, :alt => image.alt) %>
    <% end -%>
  </div>
<% end -%>

资料来源:Rails 每个循环每 6 个项目插入标签?

在这里,他还使用-%>了所有块。

4

1 回答 1

13

我想补充一些我知道的关于 ERB 的资源:

  • Rails extends ERB,因此您可以通过在 Rails 模板中的标签中添加尾随连字符来抑制换行:

    <ul>
      <% for @item in @items -%>
        <li><%= @item %></li>
      <% end -%>
    </ul>
    
  • 注释标记使用hash符号:

     <%# This is just a comment %>
    
  • 带有 an 的标记equals sign表示封闭的代码是一个表达式,并且渲染器在渲染模板时应该用代码的结果(作为字符串)替换代码元素。使用表达式将一行代码嵌入到模板中,或显示变量的内容:

     Hello, <%= @name %>.
     Today is <%= Time.now.strftime('%A') %>.
    
  • 使用一个equal sign字符串将被编码。为避免编码,您可以使用两个equals signs(或raw):

        Hello, <%== @unencodedOutput %>
    
  • 不带equals符号的标记表示随附的代码是scriptlet。每个 scriptlet 都被捕获并执行,然后将代码的最终结果注入到scriptlet处的输出中。

    <ul>
      <% for @item in @shopping_list %>
        <li><%= @item %></li>
      <% end %>
    </ul>
    

    Scriptlet 最常用于将循环或条件逻辑嵌入到模板中:

阅读ERB 模板简介以了解更多信息。

于 2013-11-05T13:10:53.980 回答