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

Phi*_*ani 11 ruby convention coding-style ruby-on-rails

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

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

例:

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

来源:Rails每6个项目的每个循环插入标记?

在这里,他也用于-%>所有积木.

Aru*_*hit 13

我想补充一些我了解ERB的资源:

  • Rails扩展ERB,因此您只需在Rails模板中向标记添加尾部连字符即可抑制换行:

    <ul>
      <% for @item in @items -%>
        <li><%= @item %></li>
      <% end -%>
    </ul>
    
    Run Code Online (Sandbox Code Playgroud)
  • 评论标记使用hash符号:

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

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

        Hello, <%== @unencodedOutput %>
    
    Run Code Online (Sandbox Code Playgroud)
  • 没有equals符号的标签表示附带的代码是一个scriptlet.捕获并执行每个scriptlet,然后将代码的最终结果注入scriptlet点的输出.

    <ul>
      <% for @item in @shopping_list %>
        <li><%= @item %></li>
      <% end %>
    </ul>
    
    Run Code Online (Sandbox Code Playgroud)

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

阅读ERB Templating简介了解更多信息.