【问题标题】:why does this comment create a compile error on Ruby on Rails?为什么此评论会在 Ruby on Rails 上产生编译错误?
【发布时间】:2009-05-24 19:20:44
【问题描述】:

中显示有一行

<%= h @stories.inspect %>

而且输出太长了,所以我改成

<%= #h @stories.inspect %>

<% @stories.each do |s| %>
  <%= h s.inspect %>
<% end %>

(注释掉第一行)。现在代码将无法编译...说

编译错误
/Users/winterheat/ror/shov2/app/views/stories/index.html.erb:13:语法错误,意外的 kENSURE,期待 ')'
/Users/winterheat/ror/shov2/app/views/stories/index.html.erb:15:语法错误,意外的 kEND,期待 ')'

如果我完全删除该注释行,代码将起作用。我想在某本书中,据说您可以像这样注释掉ERB中的一些代码?

更新:如果我把它改成有趣的

<% #h @stories.inspect %>

那么它会编译得很好……所以结果标签 的显示似乎不像 cmets。

【问题讨论】:

    标签: ruby-on-rails ruby erb


    【解决方案1】:

    考虑

    output << @stories.inspect
    

    output <<
    

    追踪

    【讨论】:

    • 但是如果 puts "hello" 和 puts 都可以正确处理,为什么不 呢?
    • 因为这是puts特有的实现细节,与ERB无关?
    【解决方案2】:

    在 Ruby/Rails 中注释 &lt;%= %&gt; 标记的正确方法是 &lt;%#= %&gt; ... 将注释符号放在等号之前。然后一切都会像魅力一样发挥作用。

    【讨论】:

      【解决方案3】:

      没有表达式会导致错误

      【讨论】:

        【解决方案4】:

        使用

        <% #h @stories.inspect %>
        

        而不是

        <%= #h @stories.inspect %>
        

        因为

        <%= (I expect something that I can convert to string) %>
        

        【讨论】:

          猜你喜欢
          • 2012-01-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-08-18
          • 2018-07-14
          • 2023-03-22
          • 1970-01-01
          相关资源
          最近更新 更多