为什么很多人使用“ - %>”而不是“%>”在Rails?

时间:2013-11-05 12:57:45

标签: ruby-on-rails ruby coding-style convention

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

我现在多次看到很多人使用-%>而不是%>。什么意思?

示例:

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

来源:Rails each loop insert tag every 6 items?

他在这里也使用-%>作为所有块。

1 个答案:

答案 0 :(得分:12)

我想添加一些我了解ERB的资源:

  • Rails扩展 ERB ,这样您就可以通过在Rails模板中为标记添加尾部连字符来禁止换行符

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

     <%# This is just a comment %>
    
  • 带有 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最常用于将循环或条件逻辑嵌入到模板中:

阅读An Introduction to ERB Templating了解详情。