2017-04-25 80 views
0

我在这个格式的HTML文件:为什么注释掉的ERB仍会抛出错误?

html 
more html 
<%= valid erb %> 

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

但我仍然得到一个异常页面,因为车再培训局。但是不应该评论该部分导致该部分不被浏览器读取?是否有另一种HTML方法可以防止浏览器读取代码?

+0

[阻止在html.erb模板中的注释]的重复(http://stackoverflow.com/questions/3127644/block-comments-in-html-erb-templates-in-rails) – burnettk

回答

3

因为它没有评论。

但不应该评论该部分出来导致该部分不是由浏览器读取的 ?

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

ERB是嵌入在包含文本文本的文件中的ruby代码。解释器不关心除“erb标签”中的代码之外的任何内容。

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代码。它只是从响应中发送的任何内容构建一个文档。

因此,使用红宝石注释<%#= incomplete_erb_with_bugs %>这将阻止代码被执行 - 它永远不会被发送到浏览器。

+0

这是为单行注释。对于多行注释,请参阅http://stackoverflow.com/questions/3127644/block-comments-in-html-erb-templates-in-rails。 – max

2

你正在评论html,但它里面的ruby代码仍然被评估。你需要注释掉的代码,它是这样完成的:

<%#= incomplete_erb_with_bugs %> 
1

你需要注释的实际线,不是周围

html 
more html 
<%= valid erb %> 


    <%= incomplete_erb_with_bugs %> 

,你也可以使用HTML if语句

<% if false %> 
     <%#= incomplete_erb_with_bugs %> 
<% end %> 
相关问题