【问题标题】:How does one comment in an erb template?erb模板中的一条评论如何?
【发布时间】:2011-03-26 11:53:50
【问题描述】:

我有一些琐碎的标记,如下所示:

<li class="someclass">
  <=% t'model.attr' %>
</li>

有没有一种简单的方法来评论它?只需将 &lt;!-- --&gt; 包裹在块周围,模板仍然可以使用 ruby​​ 代码。这意味着我必须分别注释掉 HTML 和 Ruby 特定的代码。

用最少的标记注释掉所有三行的最佳方法是什么?

【问题讨论】:

    标签: ruby-on-rails ruby comments erb block-comments


    【解决方案1】:

    =begin=end 是块 cmets 的 Ruby 版本。

    在 erb 模板中使用它们:

    <%
    =begin
    %>
    <li class="someclass">
      <=% t'model.attr' %>
    </li>
    <%
    =end
    %>
    

    【讨论】:

    • 这确实有效,这是我找到的最好的方法,但除了“注释掉这个”之外,这不是语义上的意思吗?如果是这样,我希望有一种更受认可的方式。
    • =begin=end 是块 cmets 的 Ruby 版本。或者,您也可以使用&lt;&lt;-ASDFASDF(用您想要的任何关键字替换 ASDF)。这是heredoc注释格式。
    【解决方案2】:

    您可以使用 # 评论 ERB 块:

    <!-- <li class="someclass"> -->
      <%#= t'model.attr' %>
    <!-- </li> -->
    

    或使用 Rails content_tag 方法避免文字 HTML:

    <%#= content_tag :li, t'model.attr', :class=>:someclass %>
    

    【讨论】:

      【解决方案3】:

      没用:

      <%# <li class="someclass">
        <=% t'model.attr' %>
      </li> %>
      

      有效:

      <% if false %>
      <li class="someclass">
        <=% t'model.attr' %>
      </li>    
      <% end %>
      

      【讨论】:

      • 从 Python/etc 过来的这个语法很容易使用,对于非 Ruby 的人来说更容易阅读。任何一天都在我的书中获胜。
      【解决方案4】:

      编辑是因为我注意到您问题的真正意图:

      <%
      =begin
      %>
      <li class="someclass">
        <%= t'model.attr' %>
      </li>
      <%
      =end
      %>
      

      在我使用过的每个语法荧光笔(主要是 textmate)中,这需要位于行首,您不能缩进它以使其显示为注释。我不知道这是规则还是突出显示的糟糕实现。

      【讨论】:

        猜你喜欢
        • 2011-11-17
        • 2012-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-08
        • 2015-09-04
        • 1970-01-01
        相关资源
        最近更新 更多