为什么注释掉的ERB仍会抛出错误?

时间:2017-04-25 00:24:17

标签: html ruby-on-rails ruby html5 erb

我有一个这种格式的HTML文件:

html
more html
<%= valid erb %>

<!--
  <%= incomplete_erb_with_bugs %>
-->

但是我仍然得到一个异常页面,因为有错误的ERB。但是不应该评论该部分导致该部分不被浏览器读取?还有另一种HTML方法可以实际阻止浏览器读取代码吗?

3 个答案:

答案 0 :(得分:3)

因为没有评论。

  

但不应该评论该部分导致该部分不存在   通过浏览器阅读?

浏览器不执行Ruby或ERB - 服务器在将生成的HTML文档发送到浏览器之前执行。

ERB是嵌入在包含文字文本的文件中的ruby代码。除了&#34; erb标签&#34;中的代码之外,解释器不关心任何事情。

This is just literal text 
<%# this is a ruby line comment - the code below is executed: %>
<% bar do %>
  <%= foo %>
<% end %> 

其余的只是放在缓冲区中。这就像PHP或任何其他嵌入式语言一样。

因此,HTML注释(或CSS或JS)不会以任何方式影响ERB解释器。解释器并不真正了解或关心其创建HTML。

  

是否有其他HTML方法可以实际阻止浏览器读取代码?

浏览器不执行Ruby代码。它只是根据您在响应中发送的任何内容构建文档。

因此使用ruby注释<%#= incomplete_erb_with_bugs %>会阻止代码被执行 - 而且它永远不会被发送到浏览器。

答案 1 :(得分:2)

你正在评论html,但其中的ruby代码仍然会被评估。你需要注释掉代码,这样就完成了:

<%#= incomplete_erb_with_bugs %>

答案 2 :(得分:1)

你需要评论实际的行,而不是它周围的html

html
more html
<%= valid erb %>


  <%= incomplete_erb_with_bugs %>

你也可以使用if语句

<% if false %>
      <%#= incomplete_erb_with_bugs %>
<% end %>